﻿using System;
using System.Diagnostics;

namespace Nature
{	
	public partial class IdealGasMixture 
	{
		public readonly ModelObject Model;

		private int? m_ncrtdc;
		partial void OnNCRTDCRequested();

		[Flags]
		enum StateChangeCategory
		{
			None = 0,
			Temperature = 1,
			Pressure = 2,
			Density = 4,
			Composition = 8
		}

		#region Private Fields
		 
		
		/// <summary>
		/// Mixture temperature [K]
		/// </summary>
		[DebuggerBrowsable(DebuggerBrowsableState.Never)]
		private ValueHolder m_temperature = new ValueHolder();  
		
		/// <summary>
		/// Mixture temperature [log(K)]
		/// </summary>
		[DebuggerBrowsable(DebuggerBrowsableState.Never)]
		private ValueHolder m_temperatureLog = new ValueHolder();  
		
		/// <summary>
		/// Mixture Pressure [Pa]
		/// </summary>
		[DebuggerBrowsable(DebuggerBrowsableState.Never)]
		private ValueHolder m_pressure = new ValueHolder();  
		
		/// <summary>
		/// Mixture Pressure [log(atm)]
		/// </summary>
		[DebuggerBrowsable(DebuggerBrowsableState.Never)]
		private ValueHolder m_pressureAtmLog = new ValueHolder();  
		
		/// <summary>
		/// Mixture Molar Density [mol/m**3]
		/// </summary>
		[DebuggerBrowsable(DebuggerBrowsableState.Never)]
		private ValueHolder m_molarDensity = new ValueHolder();  
		
		/// <summary>
		/// Mixture Mass Density [kg/m**3]
		/// </summary>
		[DebuggerBrowsable(DebuggerBrowsableState.Never)]
		private ValueHolder m_massDensity = new ValueHolder();  
		
		/// <summary>
		/// Mixture Molar Mass [kg/mol]
		/// </summary>
		[DebuggerBrowsable(DebuggerBrowsableState.Never)]
		private ValueHolder m_molarMass = new ValueHolder();  
		
		/// <summary>
		/// Mixture non-dimensional Ideal Gas Isobaric Heat Capacities (Cp) [~]
		/// </summary>
		[DebuggerBrowsable(DebuggerBrowsableState.Never)]
		private ValueHolder m_cp = new ValueHolder();  
		
		/// <summary>
		/// Mixture specific Ideal Gas Isobaric Heat Capacities (Cp) [J/K/kg]
		/// </summary>
		[DebuggerBrowsable(DebuggerBrowsableState.Never)]
		private ValueHolder m_specificCp = new ValueHolder();  
		
		/// <summary>
		/// Mixture molar Ideal Gas Isobaric Heat Capacities (Cp) [J/K/mol]
		/// </summary>
		[DebuggerBrowsable(DebuggerBrowsableState.Never)]
		private ValueHolder m_molarCp = new ValueHolder();  
		
		/// <summary>
		/// Mixture non-dimensional Ideal Gas Isochoric Heat Capacities (Cv) [~]
		/// </summary>
		[DebuggerBrowsable(DebuggerBrowsableState.Never)]
		private ValueHolder m_cv = new ValueHolder();  
		
		/// <summary>
		/// Mixture specific Ideal Gas Isochoric Heat Capacities (Cv) [J/K/kg]
		/// </summary>
		[DebuggerBrowsable(DebuggerBrowsableState.Never)]
		private ValueHolder m_specificCv = new ValueHolder();  
		
		/// <summary>
		/// Mixture molar Ideal Gas Isochoric Heat Capacities (Cv) [J/K/mol]
		/// </summary>
		[DebuggerBrowsable(DebuggerBrowsableState.Never)]
		private ValueHolder m_molarCv = new ValueHolder();  
		
		/// <summary>
		/// Mixture non-dimensional Ideal Gas Enthalpy (H) [~]
		/// </summary>
		[DebuggerBrowsable(DebuggerBrowsableState.Never)]
		private ValueHolder m_h = new ValueHolder();  
		
		/// <summary>
		/// Mixture specific Ideal Gas Enthalpy (H) [J/kg]
		/// </summary>
		[DebuggerBrowsable(DebuggerBrowsableState.Never)]
		private ValueHolder m_specificH = new ValueHolder();  
		
		/// <summary>
		/// Mixture molar Ideal Gas Enthalpy (H) [J/mol]
		/// </summary>
		[DebuggerBrowsable(DebuggerBrowsableState.Never)]
		private ValueHolder m_molarH = new ValueHolder();  
		
		/// <summary>
		/// Mixture non-dimensional Ideal Gas Energy (U) [~]
		/// </summary>
		[DebuggerBrowsable(DebuggerBrowsableState.Never)]
		private ValueHolder m_u = new ValueHolder();  
		
		/// <summary>
		/// Mixture specific Ideal Gas Energy (U) [J/kg]
		/// </summary>
		[DebuggerBrowsable(DebuggerBrowsableState.Never)]
		private ValueHolder m_specificU = new ValueHolder();  
		
		/// <summary>
		/// Mixture molar Ideal Gas Energy (U) [J/mol]
		/// </summary>
		[DebuggerBrowsable(DebuggerBrowsableState.Never)]
		private ValueHolder m_molarU = new ValueHolder();  
		
		/// <summary>
		/// Mixture non-dimensional Ideal Gas Entropy (S) [~]
		/// </summary>
		[DebuggerBrowsable(DebuggerBrowsableState.Never)]
		private ValueHolder m_s = new ValueHolder();  
		
		/// <summary>
		/// Mixture specific Ideal Gas Entropy (S) [J/K/kg]
		/// </summary>
		[DebuggerBrowsable(DebuggerBrowsableState.Never)]
		private ValueHolder m_specificS = new ValueHolder();  
		
		/// <summary>
		/// Mixture molar Ideal Gas Entropy (S) [J/K/mol]
		/// </summary>
		[DebuggerBrowsable(DebuggerBrowsableState.Never)]
		private ValueHolder m_molarS = new ValueHolder();  
		
		/// <summary>
		/// Mixture non-dimensional Ideal Gas Gibbs Energy (G) [~]
		/// </summary>
		[DebuggerBrowsable(DebuggerBrowsableState.Never)]
		private ValueHolder m_g = new ValueHolder();  
		
		/// <summary>
		/// Mixture specific Ideal Gas Gibbs Energy (G) [J/kg]
		/// </summary>
		[DebuggerBrowsable(DebuggerBrowsableState.Never)]
		private ValueHolder m_specificG = new ValueHolder();  
		
		/// <summary>
		/// Mixture molar Ideal Gas Gibbs Energy (G) [J/mol]
		/// </summary>
		[DebuggerBrowsable(DebuggerBrowsableState.Never)]
		private ValueHolder m_molarG = new ValueHolder();  
		
		/// <summary>
		/// Mixture non-dimensional Ideal Gas Helmholtz Energy (F) [~]
		/// </summary>
		[DebuggerBrowsable(DebuggerBrowsableState.Never)]
		private ValueHolder m_f = new ValueHolder();  
		
		/// <summary>
		/// Mixture specific Ideal Gas Helmholtz Energy (F) [J/kg]
		/// </summary>
		[DebuggerBrowsable(DebuggerBrowsableState.Never)]
		private ValueHolder m_specificF = new ValueHolder();  
		
		/// <summary>
		/// Mixture molar Ideal Gas Helmholtz Energy (F) [J/mol]
		/// </summary>
		[DebuggerBrowsable(DebuggerBrowsableState.Never)]
		private ValueHolder m_molarF = new ValueHolder();  
		
		/// <summary>
		/// Mixture Ideal Gas Speed of Sound (C) [m/sec]
		/// </summary>
		[DebuggerBrowsable(DebuggerBrowsableState.Never)]
		private ValueHolder m_speedOfSound = new ValueHolder();  
		
		/// <summary>
		/// Mixture ideal gas dynamic viscosities (Nu_k) [Pa * sec]
		/// </summary>
		[DebuggerBrowsable(DebuggerBrowsableState.Never)]
		private ValueHolder m_viscosity = new ValueHolder();  
		
		/// <summary>
		/// Mixture ideal gas thermal conductivities (La_k) [W/m/K]
		/// </summary>
		[DebuggerBrowsable(DebuggerBrowsableState.Never)]
		private ValueHolder m_thermalConductivity = new ValueHolder();  
		
		/// <summary>
		/// Mixture ideal gas self diffusivities (D_kk) [m**2/sec]
		/// </summary>
		[DebuggerBrowsable(DebuggerBrowsableState.Never)]
		private ValueHolder m_diffusivity = new ValueHolder();  
		 
		
		/// <summary>
		/// Species Mass Fractions
		/// </summary>
		[DebuggerBrowsable(DebuggerBrowsableState.Never)]
		private DoubleArrayHolder m_elementMassFractions;  
		
		/// <summary>
		/// Species Mole Fractions
		/// </summary>
		[DebuggerBrowsable(DebuggerBrowsableState.Never)]
		private DoubleArrayHolder m_elementMoleFractions;  
		
		/// <summary>
		/// Species Mass Fractions
		/// </summary>
		[DebuggerBrowsable(DebuggerBrowsableState.Never)]
		private DoubleArrayHolder m_speciesMassFractions;  
		
		/// <summary>
		/// Species Mole Fractions
		/// </summary>
		[DebuggerBrowsable(DebuggerBrowsableState.Never)]
		private DoubleArrayHolder m_speciesMoleFractions;  
		
		/// <summary>
		/// Species Mole Fraction logarithm
		/// </summary>
		[DebuggerBrowsable(DebuggerBrowsableState.Never)]
		private DoubleArrayHolder m_speciesMoleFractionsLog;  
		
		/// <summary>
		/// Species Molar Concentrations
		/// </summary>
		[DebuggerBrowsable(DebuggerBrowsableState.Never)]
		private DoubleArrayHolder m_speciesMolarConcentrations;  
		
		/// <summary>
		/// Species non-dimensional Ideal Gas Isobaric Heat Capacities (Cp) [~]
		/// </summary>
		[DebuggerBrowsable(DebuggerBrowsableState.Never)]
		private DoubleArrayHolder m_speciesCp;  
		
		/// <summary>
		/// Species specific Ideal Gas Isobaric Heat Capacities (Cp) [J/K/kg]
		/// </summary>
		[DebuggerBrowsable(DebuggerBrowsableState.Never)]
		private DoubleArrayHolder m_speciesSpecificCp;  
		
		/// <summary>
		/// Species molar Ideal Gas Isobaric Heat Capacities (Cp) [J/K/mol]
		/// </summary>
		[DebuggerBrowsable(DebuggerBrowsableState.Never)]
		private DoubleArrayHolder m_speciesMolarCp;  
		
		/// <summary>
		/// Species non-dimensional Ideal Gas Isochoric Heat Capacities (Cv) [~]
		/// </summary>
		[DebuggerBrowsable(DebuggerBrowsableState.Never)]
		private DoubleArrayHolder m_speciesCv;  
		
		/// <summary>
		/// Species specific Ideal Gas Isochoric Heat Capacities (Cv) [J/K/kg]
		/// </summary>
		[DebuggerBrowsable(DebuggerBrowsableState.Never)]
		private DoubleArrayHolder m_speciesSpecificCv;  
		
		/// <summary>
		/// Species molar Ideal Gas Isochoric Heat Capacities (Cv) [J/K/mol]
		/// </summary>
		[DebuggerBrowsable(DebuggerBrowsableState.Never)]
		private DoubleArrayHolder m_speciesMolarCv;  
		
		/// <summary>
		/// Species non-dimensional Ideal Gas Enthalpy (H) [~]
		/// </summary>
		[DebuggerBrowsable(DebuggerBrowsableState.Never)]
		private DoubleArrayHolder m_speciesH;  
		
		/// <summary>
		/// Species specific Ideal Gas Enthalpy (H) [J/kg]
		/// </summary>
		[DebuggerBrowsable(DebuggerBrowsableState.Never)]
		private DoubleArrayHolder m_speciesSpecificH;  
		
		/// <summary>
		/// Species molar Ideal Gas Enthalpy (H) [J/mol]
		/// </summary>
		[DebuggerBrowsable(DebuggerBrowsableState.Never)]
		private DoubleArrayHolder m_speciesMolarH;  
		
		/// <summary>
		/// Species non-dimensional Ideal Gas Energy (U) [~]
		/// </summary>
		[DebuggerBrowsable(DebuggerBrowsableState.Never)]
		private DoubleArrayHolder m_speciesU;  
		
		/// <summary>
		/// Species specific Ideal Gas Energy (U) [J/kg]
		/// </summary>
		[DebuggerBrowsable(DebuggerBrowsableState.Never)]
		private DoubleArrayHolder m_speciesSpecificU;  
		
		/// <summary>
		/// Species molar Ideal Gas Energy (U) [J/mol]
		/// </summary>
		[DebuggerBrowsable(DebuggerBrowsableState.Never)]
		private DoubleArrayHolder m_speciesMolarU;  
		
		/// <summary>
		/// Species non-dimensional Ideal Gas Entropy (S) [~]
		/// </summary>
		[DebuggerBrowsable(DebuggerBrowsableState.Never)]
		private DoubleArrayHolder m_speciesS;  
		
		/// <summary>
		/// Species specific Ideal Gas Entropy (S) [J/K/kg]
		/// </summary>
		[DebuggerBrowsable(DebuggerBrowsableState.Never)]
		private DoubleArrayHolder m_speciesSpecificS;  
		
		/// <summary>
		/// Species molar Ideal Gas Entropy (S) [J/K/mol]
		/// </summary>
		[DebuggerBrowsable(DebuggerBrowsableState.Never)]
		private DoubleArrayHolder m_speciesMolarS;  
		
		/// <summary>
		/// Species non-dimensional Ideal Gas Gibbs Energy (G) [~]
		/// </summary>
		[DebuggerBrowsable(DebuggerBrowsableState.Never)]
		private DoubleArrayHolder m_speciesG;  
		
		/// <summary>
		/// Species specific Ideal Gas Gibbs Energy (G) [J/kg]
		/// </summary>
		[DebuggerBrowsable(DebuggerBrowsableState.Never)]
		private DoubleArrayHolder m_speciesSpecificG;  
		
		/// <summary>
		/// Species molar Ideal Gas Gibbs Energy (G) [J/mol]
		/// </summary>
		[DebuggerBrowsable(DebuggerBrowsableState.Never)]
		private DoubleArrayHolder m_speciesMolarG;  
		
		/// <summary>
		/// Species non-dimensional Ideal Gas Helmholtz Energy (F) [~]
		/// </summary>
		[DebuggerBrowsable(DebuggerBrowsableState.Never)]
		private DoubleArrayHolder m_speciesF;  
		
		/// <summary>
		/// Species specific Ideal Gas Helmholtz Energy (F) [J/kg]
		/// </summary>
		[DebuggerBrowsable(DebuggerBrowsableState.Never)]
		private DoubleArrayHolder m_speciesSpecificF;  
		
		/// <summary>
		/// Species molar Ideal Gas Helmholtz Energy (F) [J/mol]
		/// </summary>
		[DebuggerBrowsable(DebuggerBrowsableState.Never)]
		private DoubleArrayHolder m_speciesMolarF;  
		
		/// <summary>
		/// Species ideal gas dynamic viscosities (Nu_k) [Pa * sec]
		/// </summary>
		[DebuggerBrowsable(DebuggerBrowsableState.Never)]
		private DoubleArrayHolder m_speciesViscosities;  
		
		/// <summary>
		/// Species ideal gas thermal conductivities (La_k) [W/m/K]
		/// </summary>
		[DebuggerBrowsable(DebuggerBrowsableState.Never)]
		private DoubleArrayHolder m_speciesThermalConductivities;  
		
		/// <summary>
		/// Species ideal gas self diffusivities (D_kk) [m**2/sec]
		/// </summary>
		[DebuggerBrowsable(DebuggerBrowsableState.Never)]
		private DoubleArrayHolder m_speciesSelfDiffusivities;  
		
		/// <summary>
		/// Species ideal gas self diffusivities as atmospheric pressure (D_kk) [m**2/sec]
		/// </summary>
		[DebuggerBrowsable(DebuggerBrowsableState.Never)]
		private DoubleArrayHolder m_speciesSelfDiffusivitiesAtP0;  
		
		/// <summary>
		/// Chemical reaction temperature dependent coefficients
		/// </summary>
		[DebuggerBrowsable(DebuggerBrowsableState.Never)]
		private DoubleArrayHolder m_reactionTemperatureDependentCoefficients;  
		
		/// <summary>
		/// Chemical reaction forward rate constants [(mol/m**3)**(1-fr)/sec]
		/// </summary>
		[DebuggerBrowsable(DebuggerBrowsableState.Never)]
		private DoubleArrayHolder m_reactionForwardConstants;  
		
		/// <summary>
		/// Chemical reaction reverse rate constants [(mol/m**3)**(1-fr)/sec]
		/// </summary>
		[DebuggerBrowsable(DebuggerBrowsableState.Never)]
		private DoubleArrayHolder m_reactionReverseConstants;  
		
		/// <summary>
		/// Chemical reaction forward rates [(mol/m**3)/sec]
		/// </summary>
		[DebuggerBrowsable(DebuggerBrowsableState.Never)]
		private DoubleArrayHolder m_reactionForwardRates;  
		
		/// <summary>
		/// Chemical reaction reverse rates [(mol/m**3)/sec]
		/// </summary>
		[DebuggerBrowsable(DebuggerBrowsableState.Never)]
		private DoubleArrayHolder m_reactionReverseRates;  
		
		/// <summary>
		/// Chemical reaction net rates [(mol/m**3)/sec]
		/// </summary>
		[DebuggerBrowsable(DebuggerBrowsableState.Never)]
		private DoubleArrayHolder m_reactionNetRates;  
		
		/// <summary>
		/// Species chemical creation rates [mol/m**3/sec]
		/// </summary>
		[DebuggerBrowsable(DebuggerBrowsableState.Never)]
		private DoubleArrayHolder m_speciesChemicalCreationRates;  
		
		/// <summary>
		/// Species chemical destruction rates [mol/m**3/sec]
		/// </summary>
		[DebuggerBrowsable(DebuggerBrowsableState.Never)]
		private DoubleArrayHolder m_speciesChemicalDestructionRates;  
		
		/// <summary>
		/// Species chemical net production rates [mol/m**3/sec]
		/// </summary>
		[DebuggerBrowsable(DebuggerBrowsableState.Never)]
		private DoubleArrayHolder m_speciesChemicalNetProductionRates;  
		
		/// <summary>
		/// Species mass fraction chemical net production rates [1/sec]
		/// </summary>
		[DebuggerBrowsable(DebuggerBrowsableState.Never)]
		private DoubleArrayHolder m_speciesMassFractionChemicalNetProductionRates;  
		 
		
		/// <summary>
		/// Species ideal gas diffusivities (D_jk) [m**2/sec]
		/// </summary>
		[DebuggerBrowsable(DebuggerBrowsableState.Never)]
		private DoubleMatrixHolder m_speciesDiffusivities;  
		
		/// <summary>
		/// Species ideal gas diffusivities at atmospheric pressure (D_jk) [m**2/sec]
		/// </summary>
		[DebuggerBrowsable(DebuggerBrowsableState.Never)]
		private DoubleMatrixHolder m_speciesDiffusivitiesAtP0;  
		
		/// <summary>
		/// Species ideal gas thermal diffusion ratios (Om_ij) [~]
		/// </summary>
		[DebuggerBrowsable(DebuggerBrowsableState.Never)]
		private DoubleMatrixHolder m_speciesThermalDiffusionRatios;  
		
		/// <summary>
		/// Wilke matrix
		/// </summary>
		[DebuggerBrowsable(DebuggerBrowsableState.Never)]
		private DoubleMatrixHolder m_speciesWilkeMatrix;  
		#endregion
	
		internal IdealGasMixture(ModelObject model, IMixtureDefinition mixtureDefinition)
		{
			OnCreating(); 
			this.Model = model;
			this.Nel = model.Nel;
			this.Nsp = model.Nsp;
			this.Nre = model.Nre; 
			m_elementMassFractions = new DoubleArrayHolder(Nel);  
			m_elementMoleFractions = new DoubleArrayHolder(Nel);  
			m_reactionForwardConstants = new DoubleArrayHolder(Nre);  
			m_reactionForwardRates = new DoubleArrayHolder(Nre);  
			m_reactionNetRates = new DoubleArrayHolder(Nre);  
			m_reactionReverseConstants = new DoubleArrayHolder(Nre);  
			m_reactionReverseRates = new DoubleArrayHolder(Nre);  
			m_reactionTemperatureDependentCoefficients = new DoubleArrayHolder(NCRTDC);  
			m_speciesChemicalCreationRates = new DoubleArrayHolder(Nsp);  
			m_speciesChemicalDestructionRates = new DoubleArrayHolder(Nsp);  
			m_speciesChemicalNetProductionRates = new DoubleArrayHolder(Nsp);  
			m_speciesCp = new DoubleArrayHolder(Nsp);  
			m_speciesCv = new DoubleArrayHolder(Nsp);  
			m_speciesF = new DoubleArrayHolder(Nsp);  
			m_speciesG = new DoubleArrayHolder(Nsp);  
			m_speciesH = new DoubleArrayHolder(Nsp);  
			m_speciesMassFractionChemicalNetProductionRates = new DoubleArrayHolder(Nsp);  
			m_speciesMassFractions = new DoubleArrayHolder(Nsp);  
			m_speciesMolarConcentrations = new DoubleArrayHolder(Nsp);  
			m_speciesMolarCp = new DoubleArrayHolder(Nsp);  
			m_speciesMolarCv = new DoubleArrayHolder(Nsp);  
			m_speciesMolarF = new DoubleArrayHolder(Nsp);  
			m_speciesMolarG = new DoubleArrayHolder(Nsp);  
			m_speciesMolarH = new DoubleArrayHolder(Nsp);  
			m_speciesMolarS = new DoubleArrayHolder(Nsp);  
			m_speciesMolarU = new DoubleArrayHolder(Nsp);  
			m_speciesMoleFractions = new DoubleArrayHolder(Nsp);  
			m_speciesMoleFractionsLog = new DoubleArrayHolder(Nsp);  
			m_speciesS = new DoubleArrayHolder(Nsp);  
			m_speciesSelfDiffusivities = new DoubleArrayHolder(Nsp);  
			m_speciesSelfDiffusivitiesAtP0 = new DoubleArrayHolder(Nsp);  
			m_speciesSpecificCp = new DoubleArrayHolder(Nsp);  
			m_speciesSpecificCv = new DoubleArrayHolder(Nsp);  
			m_speciesSpecificF = new DoubleArrayHolder(Nsp);  
			m_speciesSpecificG = new DoubleArrayHolder(Nsp);  
			m_speciesSpecificH = new DoubleArrayHolder(Nsp);  
			m_speciesSpecificS = new DoubleArrayHolder(Nsp);  
			m_speciesSpecificU = new DoubleArrayHolder(Nsp);  
			m_speciesThermalConductivities = new DoubleArrayHolder(Nsp);  
			m_speciesU = new DoubleArrayHolder(Nsp);  
			m_speciesViscosities = new DoubleArrayHolder(Nsp);  
			 
			m_speciesDiffusivities = new DoubleMatrixHolder(Nsp, (i)=> i+1);  
			m_speciesDiffusivitiesAtP0 = new DoubleMatrixHolder(Nsp, (i)=> i+1);  
			m_speciesThermalDiffusionRatios = new DoubleMatrixHolder(Nsp, (i)=> i+1);  
			m_speciesWilkeMatrix = new DoubleMatrixHolder(Nsp, (i)=> Nsp);  
			m_temperature.Value = mixtureDefinition.Temperature.ToDouble();
            m_pressure.Value = mixtureDefinition.Pressure.ToDouble();
			m_speciesMoleFractions.Assign(mixtureDefinition.X.Data,
                i => model.GetSpeciesIndex(mixtureDefinition.SpeciesIDs[i]),
                0.0);
			OnCreated();
		}

		partial void OnCreating();
		partial void OnCreated();

		private void DropState(StateChangeCategory category)
		{ 
			m_massDensity.UpToDate = false;  
			m_molarDensity.UpToDate = false;  
			m_pressure.UpToDate = false;  
			m_pressureAtmLog.UpToDate = false;  
			m_temperature.UpToDate = false;  
			if( category.HasFlag(StateChangeCategory.Temperature) )
			{  
				m_cp.UpToDate = false;   
				m_cv.UpToDate = false;   
				m_diffusivity.UpToDate = false;   
				m_f.UpToDate = false;   
				m_g.UpToDate = false;   
				m_h.UpToDate = false;   
				m_molarCp.UpToDate = false;   
				m_molarCv.UpToDate = false;   
				m_molarF.UpToDate = false;   
				m_molarG.UpToDate = false;   
				m_molarH.UpToDate = false;   
				m_molarS.UpToDate = false;   
				m_molarU.UpToDate = false;   
				m_reactionForwardConstants.UpToDate = false;   
				m_reactionForwardRates.UpToDate = false;   
				m_reactionNetRates.UpToDate = false;   
				m_reactionReverseConstants.UpToDate = false;   
				m_reactionReverseRates.UpToDate = false;   
				m_reactionTemperatureDependentCoefficients.UpToDate = false;   
				m_s.UpToDate = false;   
				m_speciesChemicalCreationRates.UpToDate = false;   
				m_speciesChemicalDestructionRates.UpToDate = false;   
				m_speciesChemicalNetProductionRates.UpToDate = false;   
				m_speciesCp.UpToDate = false;   
				m_speciesCv.UpToDate = false;   
				m_speciesDiffusivities.UpToDate = false;   
				m_speciesDiffusivitiesAtP0.UpToDate = false;   
				m_speciesF.UpToDate = false;   
				m_speciesG.UpToDate = false;   
				m_speciesH.UpToDate = false;   
				m_speciesMassFractionChemicalNetProductionRates.UpToDate = false;   
				m_speciesMolarConcentrations.UpToDate = false;   
				m_speciesMolarCp.UpToDate = false;   
				m_speciesMolarCv.UpToDate = false;   
				m_speciesMolarF.UpToDate = false;   
				m_speciesMolarG.UpToDate = false;   
				m_speciesMolarH.UpToDate = false;   
				m_speciesMolarS.UpToDate = false;   
				m_speciesMolarU.UpToDate = false;   
				m_speciesS.UpToDate = false;   
				m_speciesSelfDiffusivities.UpToDate = false;   
				m_speciesSelfDiffusivitiesAtP0.UpToDate = false;   
				m_speciesSpecificCp.UpToDate = false;   
				m_speciesSpecificCv.UpToDate = false;   
				m_speciesSpecificF.UpToDate = false;   
				m_speciesSpecificG.UpToDate = false;   
				m_speciesSpecificH.UpToDate = false;   
				m_speciesSpecificS.UpToDate = false;   
				m_speciesSpecificU.UpToDate = false;   
				m_speciesThermalConductivities.UpToDate = false;   
				m_speciesThermalDiffusionRatios.UpToDate = false;   
				m_speciesU.UpToDate = false;   
				m_speciesViscosities.UpToDate = false;   
				m_specificCp.UpToDate = false;   
				m_specificCv.UpToDate = false;   
				m_specificF.UpToDate = false;   
				m_specificG.UpToDate = false;   
				m_specificH.UpToDate = false;   
				m_specificS.UpToDate = false;   
				m_specificU.UpToDate = false;   
				m_speedOfSound.UpToDate = false;   
				m_temperatureLog.UpToDate = false;   
				m_thermalConductivity.UpToDate = false;   
				m_u.UpToDate = false;   
				m_viscosity.UpToDate = false;  
			} 
			if( category.HasFlag(StateChangeCategory.Pressure) )
			{  
				m_diffusivity.UpToDate = false;   
				m_f.UpToDate = false;   
				m_g.UpToDate = false;   
				m_molarF.UpToDate = false;   
				m_molarG.UpToDate = false;   
				m_molarS.UpToDate = false;   
				m_reactionForwardConstants.UpToDate = false;   
				m_reactionForwardRates.UpToDate = false;   
				m_reactionNetRates.UpToDate = false;   
				m_reactionReverseConstants.UpToDate = false;   
				m_reactionReverseRates.UpToDate = false;   
				m_s.UpToDate = false;   
				m_speciesChemicalCreationRates.UpToDate = false;   
				m_speciesChemicalDestructionRates.UpToDate = false;   
				m_speciesChemicalNetProductionRates.UpToDate = false;   
				m_speciesDiffusivities.UpToDate = false;   
				m_speciesMassFractionChemicalNetProductionRates.UpToDate = false;   
				m_speciesMolarConcentrations.UpToDate = false;   
				m_speciesSelfDiffusivities.UpToDate = false;   
				m_specificF.UpToDate = false;   
				m_specificG.UpToDate = false;   
				m_specificS.UpToDate = false;  
			}
			if( category.HasFlag(StateChangeCategory.Composition) )
			{  
				m_cp.UpToDate = false;   
				m_cv.UpToDate = false;   
				m_diffusivity.UpToDate = false;   
				m_elementMassFractions.UpToDate = false;   
				m_elementMoleFractions.UpToDate = false;   
				m_f.UpToDate = false;   
				m_g.UpToDate = false;   
				m_h.UpToDate = false;   
				m_molarCp.UpToDate = false;   
				m_molarCv.UpToDate = false;   
				m_molarF.UpToDate = false;   
				m_molarG.UpToDate = false;   
				m_molarH.UpToDate = false;   
				m_molarMass.UpToDate = false;   
				m_molarS.UpToDate = false;   
				m_molarU.UpToDate = false;   
				m_reactionForwardConstants.UpToDate = false;   
				m_reactionForwardRates.UpToDate = false;   
				m_reactionNetRates.UpToDate = false;   
				m_reactionReverseConstants.UpToDate = false;   
				m_reactionReverseRates.UpToDate = false;   
				m_s.UpToDate = false;   
				m_speciesChemicalCreationRates.UpToDate = false;   
				m_speciesChemicalDestructionRates.UpToDate = false;   
				m_speciesChemicalNetProductionRates.UpToDate = false;   
				m_speciesMassFractionChemicalNetProductionRates.UpToDate = false;   
				m_speciesMassFractions.UpToDate = false;   
				m_speciesMolarConcentrations.UpToDate = false;   
				m_speciesMoleFractions.UpToDate = false;   
				m_speciesMoleFractionsLog.UpToDate = false;   
				m_speciesWilkeMatrix.UpToDate = false;   
				m_specificCp.UpToDate = false;   
				m_specificCv.UpToDate = false;   
				m_specificF.UpToDate = false;   
				m_specificG.UpToDate = false;   
				m_specificH.UpToDate = false;   
				m_specificS.UpToDate = false;   
				m_specificU.UpToDate = false;   
				m_speedOfSound.UpToDate = false;   
				m_thermalConductivity.UpToDate = false;   
				m_u.UpToDate = false;   
				m_viscosity.UpToDate = false;  
			}			
		}

		/// <summary>
		/// Number of Chemical Elements
		/// </summary>
		public int Nel { get; private set; }

		/// <summary>
		/// Number of Chemical Species
		/// </summary>
		public int Nsp { get; private set; }

		/// <summary>
		/// Number of Chemical Reactions
		/// </summary>
		public int Nre { get; private set; }


		/// <summary>
		/// Number of chemical reaction temperature dependent coefficients
		/// </summary>
		public int NCRTDC 
		{
			get
			{
				if( m_ncrtdc.HasValue)
				{
					return m_ncrtdc.Value;
				}
				lock(this)
				{
					if( m_ncrtdc.HasValue)
					{
						return m_ncrtdc.Value;
					}
					OnNCRTDCRequested();
					return m_ncrtdc.Value;
				}
			}
		}

		 
		/// <summary>
		/// Mixture non-dimensional Ideal Gas Isobaric Heat Capacities (Cp) [~]
		/// </summary>
		[MixtureProperty]
		public double  Cp 
		{  
			[DebuggerStepThrough()]
			get 
			{ 
				if( false == m_cp.UpToDate )
				{
					m_cp.Value = calc_mixtureCp();
					m_cp.UpToDate = true;
				}
				return m_cp.Value; 
			}  
		}  
		/// <summary>
		/// Mixture non-dimensional Ideal Gas Isochoric Heat Capacities (Cv) [~]
		/// </summary>
		[MixtureProperty]
		public double  Cv 
		{  
			[DebuggerStepThrough()]
			get 
			{ 
				if( false == m_cv.UpToDate )
				{
					m_cv.Value = calc_mixtureCv();
					m_cv.UpToDate = true;
				}
				return m_cv.Value; 
			}  
		}  
		/// <summary>
		/// Mixture ideal gas self diffusivities (D_kk) [m**2/sec]
		/// </summary>
		[MixtureProperty]
		public double  Diffusivity 
		{  
			[DebuggerStepThrough()]
			get 
			{ 
				if( false == m_diffusivity.UpToDate )
				{
					m_diffusivity.Value = calc_mixtureSelfDiffusivity();
					m_diffusivity.UpToDate = true;
				}
				return m_diffusivity.Value; 
			}  
		}  
		/// <summary>
		/// Mixture non-dimensional Ideal Gas Helmholtz Energy (F) [~]
		/// </summary>
		[MixtureProperty]
		public double  F 
		{  
			[DebuggerStepThrough()]
			get 
			{ 
				if( false == m_f.UpToDate )
				{
					m_f.Value = calc_mixtureF();
					m_f.UpToDate = true;
				}
				return m_f.Value; 
			}  
		}  
		/// <summary>
		/// Mixture non-dimensional Ideal Gas Gibbs Energy (G) [~]
		/// </summary>
		[MixtureProperty]
		public double  G 
		{  
			[DebuggerStepThrough()]
			get 
			{ 
				if( false == m_g.UpToDate )
				{
					m_g.Value = calc_mixtureG();
					m_g.UpToDate = true;
				}
				return m_g.Value; 
			}  
		}  
		/// <summary>
		/// Mixture non-dimensional Ideal Gas Enthalpy (H) [~]
		/// </summary>
		[MixtureProperty]
		public double  H 
		{  
			[DebuggerStepThrough()]
			get 
			{ 
				if( false == m_h.UpToDate )
				{
					m_h.Value = calc_mixtureH();
					m_h.UpToDate = true;
				}
				return m_h.Value; 
			}  
		}  
		/// <summary>
		/// Mixture Mass Density [kg/m**3]
		/// </summary>
		[MixtureProperty]
		public double  MassDensity 
		{  
			[DebuggerStepThrough()]
			get 
			{ 
				if( false == m_massDensity.UpToDate )
				{
					m_massDensity.Value = calc_massDensity();
					m_massDensity.UpToDate = true;
				}
				return m_massDensity.Value; 
			}  
		}  
		/// <summary>
		/// Mixture molar Ideal Gas Isobaric Heat Capacities (Cp) [J/K/mol]
		/// </summary>
		[MixtureProperty]
		public double  MolarCp 
		{  
			[DebuggerStepThrough()]
			get 
			{ 
				if( false == m_molarCp.UpToDate )
				{
					m_molarCp.Value = calc_mixtureMolarCp();
					m_molarCp.UpToDate = true;
				}
				return m_molarCp.Value; 
			}  
		}  
		/// <summary>
		/// Mixture molar Ideal Gas Isochoric Heat Capacities (Cv) [J/K/mol]
		/// </summary>
		[MixtureProperty]
		public double  MolarCv 
		{  
			[DebuggerStepThrough()]
			get 
			{ 
				if( false == m_molarCv.UpToDate )
				{
					m_molarCv.Value = calc_mixtureMolarCv();
					m_molarCv.UpToDate = true;
				}
				return m_molarCv.Value; 
			}  
		}  
		/// <summary>
		/// Mixture Molar Density [mol/m**3]
		/// </summary>
		[MixtureProperty]
		public double  MolarDensity 
		{  
			[DebuggerStepThrough()]
			get 
			{ 
				if( false == m_molarDensity.UpToDate )
				{
					m_molarDensity.Value = calc_mixtureMolarDensity();
					m_molarDensity.UpToDate = true;
				}
				return m_molarDensity.Value; 
			}  
		}  
		/// <summary>
		/// Mixture molar Ideal Gas Helmholtz Energy (F) [J/mol]
		/// </summary>
		[MixtureProperty]
		public double  MolarF 
		{  
			[DebuggerStepThrough()]
			get 
			{ 
				if( false == m_molarF.UpToDate )
				{
					m_molarF.Value = calc_mixtureMolarF();
					m_molarF.UpToDate = true;
				}
				return m_molarF.Value; 
			}  
		}  
		/// <summary>
		/// Mixture molar Ideal Gas Gibbs Energy (G) [J/mol]
		/// </summary>
		[MixtureProperty]
		public double  MolarG 
		{  
			[DebuggerStepThrough()]
			get 
			{ 
				if( false == m_molarG.UpToDate )
				{
					m_molarG.Value = calc_mixtureMolarG();
					m_molarG.UpToDate = true;
				}
				return m_molarG.Value; 
			}  
		}  
		/// <summary>
		/// Mixture molar Ideal Gas Enthalpy (H) [J/mol]
		/// </summary>
		[MixtureProperty]
		public double  MolarH 
		{  
			[DebuggerStepThrough()]
			get 
			{ 
				if( false == m_molarH.UpToDate )
				{
					m_molarH.Value = calc_mixtureMolarH();
					m_molarH.UpToDate = true;
				}
				return m_molarH.Value; 
			}  
		}  
		/// <summary>
		/// Mixture Molar Mass [kg/mol]
		/// </summary>
		[MixtureProperty]
		public double  MolarMass 
		{  
			[DebuggerStepThrough()]
			get 
			{ 
				if( false == m_molarMass.UpToDate )
				{
					m_molarMass.Value = calc_molarmass();
					m_molarMass.UpToDate = true;
				}
				return m_molarMass.Value; 
			}  
		}  
		/// <summary>
		/// Mixture molar Ideal Gas Entropy (S) [J/K/mol]
		/// </summary>
		[MixtureProperty]
		public double  MolarS 
		{  
			[DebuggerStepThrough()]
			get 
			{ 
				if( false == m_molarS.UpToDate )
				{
					m_molarS.Value = calc_mixtureMolarS();
					m_molarS.UpToDate = true;
				}
				return m_molarS.Value; 
			}  
		}  
		/// <summary>
		/// Mixture molar Ideal Gas Energy (U) [J/mol]
		/// </summary>
		[MixtureProperty]
		public double  MolarU 
		{  
			[DebuggerStepThrough()]
			get 
			{ 
				if( false == m_molarU.UpToDate )
				{
					m_molarU.Value = calc_mixtureMolarU();
					m_molarU.UpToDate = true;
				}
				return m_molarU.Value; 
			}  
		}  
		/// <summary>
		/// Mixture Pressure [Pa]
		/// </summary>
		[MixtureProperty]
		public double  Pressure 
		{  
			[DebuggerStepThrough()]
			get 
			{ 
				if( false == m_pressure.UpToDate )
				{
					m_pressure.Value = calc_pressure();
					m_pressure.UpToDate = true;
				}
				return m_pressure.Value; 
			}  
		}  
		/// <summary>
		/// Mixture Pressure [log(atm)]
		/// </summary>
		[MixtureProperty]
		public double  PressureAtmLog 
		{  
			[DebuggerStepThrough()]
			get 
			{ 
				if( false == m_pressureAtmLog.UpToDate )
				{
					m_pressureAtmLog.Value = calc_pressureAtmLog();
					m_pressureAtmLog.UpToDate = true;
				}
				return m_pressureAtmLog.Value; 
			}  
		}  
		/// <summary>
		/// Mixture non-dimensional Ideal Gas Entropy (S) [~]
		/// </summary>
		[MixtureProperty]
		public double  S 
		{  
			[DebuggerStepThrough()]
			get 
			{ 
				if( false == m_s.UpToDate )
				{
					m_s.Value = calc_mixtureS();
					m_s.UpToDate = true;
				}
				return m_s.Value; 
			}  
		}  
		/// <summary>
		/// Mixture specific Ideal Gas Isobaric Heat Capacities (Cp) [J/K/kg]
		/// </summary>
		[MixtureProperty]
		public double  SpecificCp 
		{  
			[DebuggerStepThrough()]
			get 
			{ 
				if( false == m_specificCp.UpToDate )
				{
					m_specificCp.Value = calc_mixtureSpecificCp();
					m_specificCp.UpToDate = true;
				}
				return m_specificCp.Value; 
			}  
		}  
		/// <summary>
		/// Mixture specific Ideal Gas Isochoric Heat Capacities (Cv) [J/K/kg]
		/// </summary>
		[MixtureProperty]
		public double  SpecificCv 
		{  
			[DebuggerStepThrough()]
			get 
			{ 
				if( false == m_specificCv.UpToDate )
				{
					m_specificCv.Value = calc_mixtureSpecificCv();
					m_specificCv.UpToDate = true;
				}
				return m_specificCv.Value; 
			}  
		}  
		/// <summary>
		/// Mixture specific Ideal Gas Helmholtz Energy (F) [J/kg]
		/// </summary>
		[MixtureProperty]
		public double  SpecificF 
		{  
			[DebuggerStepThrough()]
			get 
			{ 
				if( false == m_specificF.UpToDate )
				{
					m_specificF.Value = calc_mixtureSpecificF();
					m_specificF.UpToDate = true;
				}
				return m_specificF.Value; 
			}  
		}  
		/// <summary>
		/// Mixture specific Ideal Gas Gibbs Energy (G) [J/kg]
		/// </summary>
		[MixtureProperty]
		public double  SpecificG 
		{  
			[DebuggerStepThrough()]
			get 
			{ 
				if( false == m_specificG.UpToDate )
				{
					m_specificG.Value = calc_mixtureSpecificG();
					m_specificG.UpToDate = true;
				}
				return m_specificG.Value; 
			}  
		}  
		/// <summary>
		/// Mixture specific Ideal Gas Enthalpy (H) [J/kg]
		/// </summary>
		[MixtureProperty]
		public double  SpecificH 
		{  
			[DebuggerStepThrough()]
			get 
			{ 
				if( false == m_specificH.UpToDate )
				{
					m_specificH.Value = calc_mixtureSpecificH();
					m_specificH.UpToDate = true;
				}
				return m_specificH.Value; 
			}  
		}  
		/// <summary>
		/// Mixture specific Ideal Gas Entropy (S) [J/K/kg]
		/// </summary>
		[MixtureProperty]
		public double  SpecificS 
		{  
			[DebuggerStepThrough()]
			get 
			{ 
				if( false == m_specificS.UpToDate )
				{
					m_specificS.Value = calc_mixtureSpecificS();
					m_specificS.UpToDate = true;
				}
				return m_specificS.Value; 
			}  
		}  
		/// <summary>
		/// Mixture specific Ideal Gas Energy (U) [J/kg]
		/// </summary>
		[MixtureProperty]
		public double  SpecificU 
		{  
			[DebuggerStepThrough()]
			get 
			{ 
				if( false == m_specificU.UpToDate )
				{
					m_specificU.Value = calc_mixtureSpecificU();
					m_specificU.UpToDate = true;
				}
				return m_specificU.Value; 
			}  
		}  
		/// <summary>
		/// Mixture Ideal Gas Speed of Sound (C) [m/sec]
		/// </summary>
		[MixtureProperty]
		public double  SpeedOfSound 
		{  
			[DebuggerStepThrough()]
			get 
			{ 
				if( false == m_speedOfSound.UpToDate )
				{
					m_speedOfSound.Value = calc_mixtureSpeedOfSound();
					m_speedOfSound.UpToDate = true;
				}
				return m_speedOfSound.Value; 
			}  
		}  
		/// <summary>
		/// Mixture temperature [K]
		/// </summary>
		[MixtureProperty]
		public double  Temperature 
		{  
			[DebuggerStepThrough()]
			get 
			{ 
				if( false == m_temperature.UpToDate )
				{
					m_temperature.Value = calc_temperature();
					m_temperature.UpToDate = true;
				}
				return m_temperature.Value; 
			}  
		}  
		/// <summary>
		/// Mixture temperature [log(K)]
		/// </summary>
		[MixtureProperty]
		public double  TemperatureLog 
		{  
			[DebuggerStepThrough()]
			get 
			{ 
				if( false == m_temperatureLog.UpToDate )
				{
					m_temperatureLog.Value = calc_temperatureLog();
					m_temperatureLog.UpToDate = true;
				}
				return m_temperatureLog.Value; 
			}  
		}  
		/// <summary>
		/// Mixture ideal gas thermal conductivities (La_k) [W/m/K]
		/// </summary>
		[MixtureProperty]
		public double  ThermalConductivity 
		{  
			[DebuggerStepThrough()]
			get 
			{ 
				if( false == m_thermalConductivity.UpToDate )
				{
					m_thermalConductivity.Value = calc_mixtureThermalConductivity();
					m_thermalConductivity.UpToDate = true;
				}
				return m_thermalConductivity.Value; 
			}  
		}  
		/// <summary>
		/// Mixture non-dimensional Ideal Gas Energy (U) [~]
		/// </summary>
		[MixtureProperty]
		public double  U 
		{  
			[DebuggerStepThrough()]
			get 
			{ 
				if( false == m_u.UpToDate )
				{
					m_u.Value = calc_mixtureU();
					m_u.UpToDate = true;
				}
				return m_u.Value; 
			}  
		}  
		/// <summary>
		/// Mixture ideal gas dynamic viscosities (Nu_k) [Pa * sec]
		/// </summary>
		[MixtureProperty]
		public double  Viscosity 
		{  
			[DebuggerStepThrough()]
			get 
			{ 
				if( false == m_viscosity.UpToDate )
				{
					m_viscosity.Value = calc_mixtureViscosity();
					m_viscosity.UpToDate = true;
				}
				return m_viscosity.Value; 
			}  
		}  

		 
		/// <summary>
		/// Species Mass Fractions
		/// </summary>
		[MixtureProperty]
		public ReadOnlyArray<double>  ElementMassFractions 
		{  
			[DebuggerStepThrough()]
			get 
			{ 
				if( false == m_elementMassFractions.UpToDate)
				{
					calc_elementMassFractions(m_elementMassFractions.Array);
					m_elementMassFractions.UpToDate = true;
				}
				return m_elementMassFractions.Array; 
			}  
		}  
		/// <summary>
		/// Species Mole Fractions
		/// </summary>
		[MixtureProperty]
		public ReadOnlyArray<double>  ElementMoleFractions 
		{  
			[DebuggerStepThrough()]
			get 
			{ 
				if( false == m_elementMoleFractions.UpToDate)
				{
					calc_elementMoleFractions(m_elementMoleFractions.Array);
					m_elementMoleFractions.UpToDate = true;
				}
				return m_elementMoleFractions.Array; 
			}  
		}  
		/// <summary>
		/// Chemical reaction forward rate constants [(mol/m**3)**(1-fr)/sec]
		/// </summary>
		[MixtureProperty]
		public ReadOnlyArray<double>  ReactionForwardConstants 
		{  
			[DebuggerStepThrough()]
			get 
			{ 
				if( false == m_reactionForwardConstants.UpToDate)
				{
					calc_reactionForwardConstants(m_reactionForwardConstants.Array);
					m_reactionForwardConstants.UpToDate = true;
				}
				return m_reactionForwardConstants.Array; 
			}  
		}  
		/// <summary>
		/// Chemical reaction forward rates [(mol/m**3)/sec]
		/// </summary>
		[MixtureProperty]
		public ReadOnlyArray<double>  ReactionForwardRates 
		{  
			[DebuggerStepThrough()]
			get 
			{ 
				if( false == m_reactionForwardRates.UpToDate)
				{
					calc_reactionForwardRates(m_reactionForwardRates.Array);
					m_reactionForwardRates.UpToDate = true;
				}
				return m_reactionForwardRates.Array; 
			}  
		}  
		/// <summary>
		/// Chemical reaction net rates [(mol/m**3)/sec]
		/// </summary>
		[MixtureProperty]
		public ReadOnlyArray<double>  ReactionNetRates 
		{  
			[DebuggerStepThrough()]
			get 
			{ 
				if( false == m_reactionNetRates.UpToDate)
				{
					calc_reactionNetRates(m_reactionNetRates.Array);
					m_reactionNetRates.UpToDate = true;
				}
				return m_reactionNetRates.Array; 
			}  
		}  
		/// <summary>
		/// Chemical reaction reverse rate constants [(mol/m**3)**(1-fr)/sec]
		/// </summary>
		[MixtureProperty]
		public ReadOnlyArray<double>  ReactionReverseConstants 
		{  
			[DebuggerStepThrough()]
			get 
			{ 
				if( false == m_reactionReverseConstants.UpToDate)
				{
					calc_reactionReverseConstants(m_reactionReverseConstants.Array);
					m_reactionReverseConstants.UpToDate = true;
				}
				return m_reactionReverseConstants.Array; 
			}  
		}  
		/// <summary>
		/// Chemical reaction reverse rates [(mol/m**3)/sec]
		/// </summary>
		[MixtureProperty]
		public ReadOnlyArray<double>  ReactionReverseRates 
		{  
			[DebuggerStepThrough()]
			get 
			{ 
				if( false == m_reactionReverseRates.UpToDate)
				{
					calc_reactionReverseRates(m_reactionReverseRates.Array);
					m_reactionReverseRates.UpToDate = true;
				}
				return m_reactionReverseRates.Array; 
			}  
		}  
		/// <summary>
		/// Chemical reaction temperature dependent coefficients
		/// </summary>
		[MixtureProperty]
		public ReadOnlyArray<double>  ReactionTemperatureDependentCoefficients 
		{  
			[DebuggerStepThrough()]
			get 
			{ 
				if( false == m_reactionTemperatureDependentCoefficients.UpToDate)
				{
					calc_reactionTemperatureDependentCoefficients(m_reactionTemperatureDependentCoefficients.Array);
					m_reactionTemperatureDependentCoefficients.UpToDate = true;
				}
				return m_reactionTemperatureDependentCoefficients.Array; 
			}  
		}  
		/// <summary>
		/// Species chemical creation rates [mol/m**3/sec]
		/// </summary>
		[MixtureProperty]
		public ReadOnlyArray<double>  SpeciesChemicalCreationRates 
		{  
			[DebuggerStepThrough()]
			get 
			{ 
				if( false == m_speciesChemicalCreationRates.UpToDate)
				{
					calc_speciesChemicalCreationRates(m_speciesChemicalCreationRates.Array);
					m_speciesChemicalCreationRates.UpToDate = true;
				}
				return m_speciesChemicalCreationRates.Array; 
			}  
		}  
		/// <summary>
		/// Species chemical destruction rates [mol/m**3/sec]
		/// </summary>
		[MixtureProperty]
		public ReadOnlyArray<double>  SpeciesChemicalDestructionRates 
		{  
			[DebuggerStepThrough()]
			get 
			{ 
				if( false == m_speciesChemicalDestructionRates.UpToDate)
				{
					calc_speciesChemicalDestructionRates(m_speciesChemicalDestructionRates.Array);
					m_speciesChemicalDestructionRates.UpToDate = true;
				}
				return m_speciesChemicalDestructionRates.Array; 
			}  
		}  
		/// <summary>
		/// Species chemical net production rates [mol/m**3/sec]
		/// </summary>
		[MixtureProperty]
		public ReadOnlyArray<double>  SpeciesChemicalNetProductionRates 
		{  
			[DebuggerStepThrough()]
			get 
			{ 
				if( false == m_speciesChemicalNetProductionRates.UpToDate)
				{
					calc_speciesChemicalNetProductionRates(m_speciesChemicalNetProductionRates.Array);
					m_speciesChemicalNetProductionRates.UpToDate = true;
				}
				return m_speciesChemicalNetProductionRates.Array; 
			}  
		}  
		/// <summary>
		/// Species non-dimensional Ideal Gas Isobaric Heat Capacities (Cp) [~]
		/// </summary>
		[MixtureProperty]
		public ReadOnlyArray<double>  SpeciesCp 
		{  
			[DebuggerStepThrough()]
			get 
			{ 
				if( false == m_speciesCp.UpToDate)
				{
					calc_speciesCp(m_speciesCp.Array);
					m_speciesCp.UpToDate = true;
				}
				return m_speciesCp.Array; 
			}  
		}  
		/// <summary>
		/// Species non-dimensional Ideal Gas Isochoric Heat Capacities (Cv) [~]
		/// </summary>
		[MixtureProperty]
		public ReadOnlyArray<double>  SpeciesCv 
		{  
			[DebuggerStepThrough()]
			get 
			{ 
				if( false == m_speciesCv.UpToDate)
				{
					calc_speciesCv(m_speciesCv.Array);
					m_speciesCv.UpToDate = true;
				}
				return m_speciesCv.Array; 
			}  
		}  
		/// <summary>
		/// Species non-dimensional Ideal Gas Helmholtz Energy (F) [~]
		/// </summary>
		[MixtureProperty]
		public ReadOnlyArray<double>  SpeciesF 
		{  
			[DebuggerStepThrough()]
			get 
			{ 
				if( false == m_speciesF.UpToDate)
				{
					calc_speciesF(m_speciesF.Array);
					m_speciesF.UpToDate = true;
				}
				return m_speciesF.Array; 
			}  
		}  
		/// <summary>
		/// Species non-dimensional Ideal Gas Gibbs Energy (G) [~]
		/// </summary>
		[MixtureProperty]
		public ReadOnlyArray<double>  SpeciesG 
		{  
			[DebuggerStepThrough()]
			get 
			{ 
				if( false == m_speciesG.UpToDate)
				{
					calc_speciesG(m_speciesG.Array);
					m_speciesG.UpToDate = true;
				}
				return m_speciesG.Array; 
			}  
		}  
		/// <summary>
		/// Species non-dimensional Ideal Gas Enthalpy (H) [~]
		/// </summary>
		[MixtureProperty]
		public ReadOnlyArray<double>  SpeciesH 
		{  
			[DebuggerStepThrough()]
			get 
			{ 
				if( false == m_speciesH.UpToDate)
				{
					calc_speciesH(m_speciesH.Array);
					m_speciesH.UpToDate = true;
				}
				return m_speciesH.Array; 
			}  
		}  
		/// <summary>
		/// Species mass fraction chemical net production rates [1/sec]
		/// </summary>
		[MixtureProperty]
		public ReadOnlyArray<double>  SpeciesMassFractionChemicalNetProductionRates 
		{  
			[DebuggerStepThrough()]
			get 
			{ 
				if( false == m_speciesMassFractionChemicalNetProductionRates.UpToDate)
				{
					calc_speciesMassFractionChemicalNetProductionRates(m_speciesMassFractionChemicalNetProductionRates.Array);
					m_speciesMassFractionChemicalNetProductionRates.UpToDate = true;
				}
				return m_speciesMassFractionChemicalNetProductionRates.Array; 
			}  
		}  
		/// <summary>
		/// Species Mass Fractions
		/// </summary>
		[MixtureProperty]
		public ReadOnlyArray<double>  SpeciesMassFractions 
		{  
			[DebuggerStepThrough()]
			get 
			{ 
				if( false == m_speciesMassFractions.UpToDate)
				{
					calc_speciesMassFractions(m_speciesMassFractions.Array);
					m_speciesMassFractions.UpToDate = true;
				}
				return m_speciesMassFractions.Array; 
			}  
		}  
		/// <summary>
		/// Species Molar Concentrations
		/// </summary>
		[MixtureProperty]
		public ReadOnlyArray<double>  SpeciesMolarConcentrations 
		{  
			[DebuggerStepThrough()]
			get 
			{ 
				if( false == m_speciesMolarConcentrations.UpToDate)
				{
					calc_speciesMolarConcentrations(m_speciesMolarConcentrations.Array);
					m_speciesMolarConcentrations.UpToDate = true;
				}
				return m_speciesMolarConcentrations.Array; 
			}  
		}  
		/// <summary>
		/// Species molar Ideal Gas Isobaric Heat Capacities (Cp) [J/K/mol]
		/// </summary>
		[MixtureProperty]
		public ReadOnlyArray<double>  SpeciesMolarCp 
		{  
			[DebuggerStepThrough()]
			get 
			{ 
				if( false == m_speciesMolarCp.UpToDate)
				{
					calc_speciesMolarCp(m_speciesMolarCp.Array);
					m_speciesMolarCp.UpToDate = true;
				}
				return m_speciesMolarCp.Array; 
			}  
		}  
		/// <summary>
		/// Species molar Ideal Gas Isochoric Heat Capacities (Cv) [J/K/mol]
		/// </summary>
		[MixtureProperty]
		public ReadOnlyArray<double>  SpeciesMolarCv 
		{  
			[DebuggerStepThrough()]
			get 
			{ 
				if( false == m_speciesMolarCv.UpToDate)
				{
					calc_speciesMolarCv(m_speciesMolarCv.Array);
					m_speciesMolarCv.UpToDate = true;
				}
				return m_speciesMolarCv.Array; 
			}  
		}  
		/// <summary>
		/// Species molar Ideal Gas Helmholtz Energy (F) [J/mol]
		/// </summary>
		[MixtureProperty]
		public ReadOnlyArray<double>  SpeciesMolarF 
		{  
			[DebuggerStepThrough()]
			get 
			{ 
				if( false == m_speciesMolarF.UpToDate)
				{
					calc_speciesMolarF(m_speciesMolarF.Array);
					m_speciesMolarF.UpToDate = true;
				}
				return m_speciesMolarF.Array; 
			}  
		}  
		/// <summary>
		/// Species molar Ideal Gas Gibbs Energy (G) [J/mol]
		/// </summary>
		[MixtureProperty]
		public ReadOnlyArray<double>  SpeciesMolarG 
		{  
			[DebuggerStepThrough()]
			get 
			{ 
				if( false == m_speciesMolarG.UpToDate)
				{
					calc_speciesMolarG(m_speciesMolarG.Array);
					m_speciesMolarG.UpToDate = true;
				}
				return m_speciesMolarG.Array; 
			}  
		}  
		/// <summary>
		/// Species molar Ideal Gas Enthalpy (H) [J/mol]
		/// </summary>
		[MixtureProperty]
		public ReadOnlyArray<double>  SpeciesMolarH 
		{  
			[DebuggerStepThrough()]
			get 
			{ 
				if( false == m_speciesMolarH.UpToDate)
				{
					calc_speciesMolarH(m_speciesMolarH.Array);
					m_speciesMolarH.UpToDate = true;
				}
				return m_speciesMolarH.Array; 
			}  
		}  
		/// <summary>
		/// Species molar Ideal Gas Entropy (S) [J/K/mol]
		/// </summary>
		[MixtureProperty]
		public ReadOnlyArray<double>  SpeciesMolarS 
		{  
			[DebuggerStepThrough()]
			get 
			{ 
				if( false == m_speciesMolarS.UpToDate)
				{
					calc_speciesMolarS(m_speciesMolarS.Array);
					m_speciesMolarS.UpToDate = true;
				}
				return m_speciesMolarS.Array; 
			}  
		}  
		/// <summary>
		/// Species molar Ideal Gas Energy (U) [J/mol]
		/// </summary>
		[MixtureProperty]
		public ReadOnlyArray<double>  SpeciesMolarU 
		{  
			[DebuggerStepThrough()]
			get 
			{ 
				if( false == m_speciesMolarU.UpToDate)
				{
					calc_speciesMolarU(m_speciesMolarU.Array);
					m_speciesMolarU.UpToDate = true;
				}
				return m_speciesMolarU.Array; 
			}  
		}  
		/// <summary>
		/// Species Mole Fractions
		/// </summary>
		[MixtureProperty]
		public ReadOnlyArray<double>  SpeciesMoleFractions 
		{  
			[DebuggerStepThrough()]
			get 
			{ 
				if( false == m_speciesMoleFractions.UpToDate)
				{
					calc_speciesMoleFractions(m_speciesMoleFractions.Array);
					m_speciesMoleFractions.UpToDate = true;
				}
				return m_speciesMoleFractions.Array; 
			}  
		}  
		/// <summary>
		/// Species Mole Fraction logarithm
		/// </summary>
		[MixtureProperty]
		public ReadOnlyArray<double>  SpeciesMoleFractionsLog 
		{  
			[DebuggerStepThrough()]
			get 
			{ 
				if( false == m_speciesMoleFractionsLog.UpToDate)
				{
					calc_speciesMoleFractionsLog(m_speciesMoleFractionsLog.Array);
					m_speciesMoleFractionsLog.UpToDate = true;
				}
				return m_speciesMoleFractionsLog.Array; 
			}  
		}  
		/// <summary>
		/// Species non-dimensional Ideal Gas Entropy (S) [~]
		/// </summary>
		[MixtureProperty]
		public ReadOnlyArray<double>  SpeciesS 
		{  
			[DebuggerStepThrough()]
			get 
			{ 
				if( false == m_speciesS.UpToDate)
				{
					calc_speciesS(m_speciesS.Array);
					m_speciesS.UpToDate = true;
				}
				return m_speciesS.Array; 
			}  
		}  
		/// <summary>
		/// Species ideal gas self diffusivities (D_kk) [m**2/sec]
		/// </summary>
		[MixtureProperty]
		public ReadOnlyArray<double>  SpeciesSelfDiffusivities 
		{  
			[DebuggerStepThrough()]
			get 
			{ 
				if( false == m_speciesSelfDiffusivities.UpToDate)
				{
					calc_speciesSelfDiffusivities(m_speciesSelfDiffusivities.Array);
					m_speciesSelfDiffusivities.UpToDate = true;
				}
				return m_speciesSelfDiffusivities.Array; 
			}  
		}  
		/// <summary>
		/// Species ideal gas self diffusivities as atmospheric pressure (D_kk) [m**2/sec]
		/// </summary>
		[MixtureProperty]
		public ReadOnlyArray<double>  SpeciesSelfDiffusivitiesAtP0 
		{  
			[DebuggerStepThrough()]
			get 
			{ 
				if( false == m_speciesSelfDiffusivitiesAtP0.UpToDate)
				{
					calc_speciesSelfDiffusivitiesAtOneAtmosphere(m_speciesSelfDiffusivitiesAtP0.Array);
					m_speciesSelfDiffusivitiesAtP0.UpToDate = true;
				}
				return m_speciesSelfDiffusivitiesAtP0.Array; 
			}  
		}  
		/// <summary>
		/// Species specific Ideal Gas Isobaric Heat Capacities (Cp) [J/K/kg]
		/// </summary>
		[MixtureProperty]
		public ReadOnlyArray<double>  SpeciesSpecificCp 
		{  
			[DebuggerStepThrough()]
			get 
			{ 
				if( false == m_speciesSpecificCp.UpToDate)
				{
					calc_speciesSpecificCp(m_speciesSpecificCp.Array);
					m_speciesSpecificCp.UpToDate = true;
				}
				return m_speciesSpecificCp.Array; 
			}  
		}  
		/// <summary>
		/// Species specific Ideal Gas Isochoric Heat Capacities (Cv) [J/K/kg]
		/// </summary>
		[MixtureProperty]
		public ReadOnlyArray<double>  SpeciesSpecificCv 
		{  
			[DebuggerStepThrough()]
			get 
			{ 
				if( false == m_speciesSpecificCv.UpToDate)
				{
					calc_speciesSpecificCv(m_speciesSpecificCv.Array);
					m_speciesSpecificCv.UpToDate = true;
				}
				return m_speciesSpecificCv.Array; 
			}  
		}  
		/// <summary>
		/// Species specific Ideal Gas Helmholtz Energy (F) [J/kg]
		/// </summary>
		[MixtureProperty]
		public ReadOnlyArray<double>  SpeciesSpecificF 
		{  
			[DebuggerStepThrough()]
			get 
			{ 
				if( false == m_speciesSpecificF.UpToDate)
				{
					calc_speciesSpecificF(m_speciesSpecificF.Array);
					m_speciesSpecificF.UpToDate = true;
				}
				return m_speciesSpecificF.Array; 
			}  
		}  
		/// <summary>
		/// Species specific Ideal Gas Gibbs Energy (G) [J/kg]
		/// </summary>
		[MixtureProperty]
		public ReadOnlyArray<double>  SpeciesSpecificG 
		{  
			[DebuggerStepThrough()]
			get 
			{ 
				if( false == m_speciesSpecificG.UpToDate)
				{
					calc_speciesSpecificG(m_speciesSpecificG.Array);
					m_speciesSpecificG.UpToDate = true;
				}
				return m_speciesSpecificG.Array; 
			}  
		}  
		/// <summary>
		/// Species specific Ideal Gas Enthalpy (H) [J/kg]
		/// </summary>
		[MixtureProperty]
		public ReadOnlyArray<double>  SpeciesSpecificH 
		{  
			[DebuggerStepThrough()]
			get 
			{ 
				if( false == m_speciesSpecificH.UpToDate)
				{
					calc_speciesSpecificH(m_speciesSpecificH.Array);
					m_speciesSpecificH.UpToDate = true;
				}
				return m_speciesSpecificH.Array; 
			}  
		}  
		/// <summary>
		/// Species specific Ideal Gas Entropy (S) [J/K/kg]
		/// </summary>
		[MixtureProperty]
		public ReadOnlyArray<double>  SpeciesSpecificS 
		{  
			[DebuggerStepThrough()]
			get 
			{ 
				if( false == m_speciesSpecificS.UpToDate)
				{
					calc_speciesSpecificS(m_speciesSpecificS.Array);
					m_speciesSpecificS.UpToDate = true;
				}
				return m_speciesSpecificS.Array; 
			}  
		}  
		/// <summary>
		/// Species specific Ideal Gas Energy (U) [J/kg]
		/// </summary>
		[MixtureProperty]
		public ReadOnlyArray<double>  SpeciesSpecificU 
		{  
			[DebuggerStepThrough()]
			get 
			{ 
				if( false == m_speciesSpecificU.UpToDate)
				{
					calc_speciesSpecificU(m_speciesSpecificU.Array);
					m_speciesSpecificU.UpToDate = true;
				}
				return m_speciesSpecificU.Array; 
			}  
		}  
		/// <summary>
		/// Species ideal gas thermal conductivities (La_k) [W/m/K]
		/// </summary>
		[MixtureProperty]
		public ReadOnlyArray<double>  SpeciesThermalConductivities 
		{  
			[DebuggerStepThrough()]
			get 
			{ 
				if( false == m_speciesThermalConductivities.UpToDate)
				{
					calc_speciesThermalConductivities(m_speciesThermalConductivities.Array);
					m_speciesThermalConductivities.UpToDate = true;
				}
				return m_speciesThermalConductivities.Array; 
			}  
		}  
		/// <summary>
		/// Species non-dimensional Ideal Gas Energy (U) [~]
		/// </summary>
		[MixtureProperty]
		public ReadOnlyArray<double>  SpeciesU 
		{  
			[DebuggerStepThrough()]
			get 
			{ 
				if( false == m_speciesU.UpToDate)
				{
					calc_speciesU(m_speciesU.Array);
					m_speciesU.UpToDate = true;
				}
				return m_speciesU.Array; 
			}  
		}  
		/// <summary>
		/// Species ideal gas dynamic viscosities (Nu_k) [Pa * sec]
		/// </summary>
		[MixtureProperty]
		public ReadOnlyArray<double>  SpeciesViscosities 
		{  
			[DebuggerStepThrough()]
			get 
			{ 
				if( false == m_speciesViscosities.UpToDate)
				{
					calc_speciesViscosities(m_speciesViscosities.Array);
					m_speciesViscosities.UpToDate = true;
				}
				return m_speciesViscosities.Array; 
			}  
		}  

		 
		/// <summary>
		/// Species ideal gas diffusivities (D_jk) [m**2/sec]
		/// </summary>
		[MixtureProperty]
		public ReadOnlyMatrix<double>  SpeciesDiffusivities
		{  
			[DebuggerStepThrough()]
			get 
			{ 
				if(false == m_speciesDiffusivities.UpToDate)
				{
					calc_speciesDiffusivities(m_speciesDiffusivities.Matrix);
					m_speciesDiffusivities.UpToDate = true;
				}
				return m_speciesDiffusivities.Matrix; 
			}  
		}  
		/// <summary>
		/// Species ideal gas diffusivities at atmospheric pressure (D_jk) [m**2/sec]
		/// </summary>
		[MixtureProperty]
		public ReadOnlyMatrix<double>  SpeciesDiffusivitiesAtP0
		{  
			[DebuggerStepThrough()]
			get 
			{ 
				if(false == m_speciesDiffusivitiesAtP0.UpToDate)
				{
					calc_speciesDiffusivitiesAtOneAtmosphere(m_speciesDiffusivitiesAtP0.Matrix);
					m_speciesDiffusivitiesAtP0.UpToDate = true;
				}
				return m_speciesDiffusivitiesAtP0.Matrix; 
			}  
		}  
		/// <summary>
		/// Species ideal gas thermal diffusion ratios (Om_ij) [~]
		/// </summary>
		[MixtureProperty]
		public ReadOnlyMatrix<double>  SpeciesThermalDiffusionRatios
		{  
			[DebuggerStepThrough()]
			get 
			{ 
				if(false == m_speciesThermalDiffusionRatios.UpToDate)
				{
					calc_speciesThermalDiffusionRatios(m_speciesThermalDiffusionRatios.Matrix);
					m_speciesThermalDiffusionRatios.UpToDate = true;
				}
				return m_speciesThermalDiffusionRatios.Matrix; 
			}  
		}  
		/// <summary>
		/// Wilke matrix
		/// </summary>
		[MixtureProperty]
		public ReadOnlyMatrix<double>  SpeciesWilkeMatrix
		{  
			[DebuggerStepThrough()]
			get 
			{ 
				if(false == m_speciesWilkeMatrix.UpToDate)
				{
					calc_wilkeBinaryCoefficients(m_speciesWilkeMatrix.Matrix);
					m_speciesWilkeMatrix.UpToDate = true;
				}
				return m_speciesWilkeMatrix.Matrix; 
			}  
		}  

		

		#region Property Names
				/// <summary>
        /// Mixture temperature [K]
        /// </summary>
		public const string TemperaturePropertyName = "Temperature";
				/// <summary>
        /// Mixture temperature [log(K)]
        /// </summary>
		public const string TemperatureLogPropertyName = "TemperatureLog";
				/// <summary>
        /// Mixture Pressure [Pa]
        /// </summary>
		public const string PressurePropertyName = "Pressure";
				/// <summary>
        /// Mixture Pressure [log(atm)]
        /// </summary>
		public const string PressureAtmLogPropertyName = "PressureAtmLog";
				/// <summary>
        /// Mixture Molar Density [mol/m**3]
        /// </summary>
		public const string MolarDensityPropertyName = "MolarDensity";
				/// <summary>
        /// Mixture Mass Density [kg/m**3]
        /// </summary>
		public const string MassDensityPropertyName = "MassDensity";
				/// <summary>
        /// Mixture Molar Mass [kg/mol]
        /// </summary>
		public const string MolarMassPropertyName = "MolarMass";
				/// <summary>
        /// Mixture non-dimensional Ideal Gas Isobaric Heat Capacities (Cp) [~]
        /// </summary>
		public const string CpPropertyName = "Cp";
				/// <summary>
        /// Mixture specific Ideal Gas Isobaric Heat Capacities (Cp) [J/K/kg]
        /// </summary>
		public const string SpecificCpPropertyName = "SpecificCp";
				/// <summary>
        /// Mixture molar Ideal Gas Isobaric Heat Capacities (Cp) [J/K/mol]
        /// </summary>
		public const string MolarCpPropertyName = "MolarCp";
				/// <summary>
        /// Mixture non-dimensional Ideal Gas Isochoric Heat Capacities (Cv) [~]
        /// </summary>
		public const string CvPropertyName = "Cv";
				/// <summary>
        /// Mixture specific Ideal Gas Isochoric Heat Capacities (Cv) [J/K/kg]
        /// </summary>
		public const string SpecificCvPropertyName = "SpecificCv";
				/// <summary>
        /// Mixture molar Ideal Gas Isochoric Heat Capacities (Cv) [J/K/mol]
        /// </summary>
		public const string MolarCvPropertyName = "MolarCv";
				/// <summary>
        /// Mixture non-dimensional Ideal Gas Enthalpy (H) [~]
        /// </summary>
		public const string HPropertyName = "H";
				/// <summary>
        /// Mixture specific Ideal Gas Enthalpy (H) [J/kg]
        /// </summary>
		public const string SpecificHPropertyName = "SpecificH";
				/// <summary>
        /// Mixture molar Ideal Gas Enthalpy (H) [J/mol]
        /// </summary>
		public const string MolarHPropertyName = "MolarH";
				/// <summary>
        /// Mixture non-dimensional Ideal Gas Energy (U) [~]
        /// </summary>
		public const string UPropertyName = "U";
				/// <summary>
        /// Mixture specific Ideal Gas Energy (U) [J/kg]
        /// </summary>
		public const string SpecificUPropertyName = "SpecificU";
				/// <summary>
        /// Mixture molar Ideal Gas Energy (U) [J/mol]
        /// </summary>
		public const string MolarUPropertyName = "MolarU";
				/// <summary>
        /// Mixture non-dimensional Ideal Gas Entropy (S) [~]
        /// </summary>
		public const string SPropertyName = "S";
				/// <summary>
        /// Mixture specific Ideal Gas Entropy (S) [J/K/kg]
        /// </summary>
		public const string SpecificSPropertyName = "SpecificS";
				/// <summary>
        /// Mixture molar Ideal Gas Entropy (S) [J/K/mol]
        /// </summary>
		public const string MolarSPropertyName = "MolarS";
				/// <summary>
        /// Mixture non-dimensional Ideal Gas Gibbs Energy (G) [~]
        /// </summary>
		public const string GPropertyName = "G";
				/// <summary>
        /// Mixture specific Ideal Gas Gibbs Energy (G) [J/kg]
        /// </summary>
		public const string SpecificGPropertyName = "SpecificG";
				/// <summary>
        /// Mixture molar Ideal Gas Gibbs Energy (G) [J/mol]
        /// </summary>
		public const string MolarGPropertyName = "MolarG";
				/// <summary>
        /// Mixture non-dimensional Ideal Gas Helmholtz Energy (F) [~]
        /// </summary>
		public const string FPropertyName = "F";
				/// <summary>
        /// Mixture specific Ideal Gas Helmholtz Energy (F) [J/kg]
        /// </summary>
		public const string SpecificFPropertyName = "SpecificF";
				/// <summary>
        /// Mixture molar Ideal Gas Helmholtz Energy (F) [J/mol]
        /// </summary>
		public const string MolarFPropertyName = "MolarF";
				/// <summary>
        /// Mixture Ideal Gas Speed of Sound (C) [m/sec]
        /// </summary>
		public const string SpeedOfSoundPropertyName = "SpeedOfSound";
				/// <summary>
        /// Mixture ideal gas dynamic viscosities (Nu_k) [Pa * sec]
        /// </summary>
		public const string ViscosityPropertyName = "Viscosity";
				/// <summary>
        /// Mixture ideal gas thermal conductivities (La_k) [W/m/K]
        /// </summary>
		public const string ThermalConductivityPropertyName = "ThermalConductivity";
				/// <summary>
        /// Mixture ideal gas self diffusivities (D_kk) [m**2/sec]
        /// </summary>
		public const string DiffusivityPropertyName = "Diffusivity";
				/// <summary>
        /// Species Mass Fractions
        /// </summary>
		public const string ElementMassFractionsPropertyName = "ElementMassFractions";
				/// <summary>
        /// Species Mole Fractions
        /// </summary>
		public const string ElementMoleFractionsPropertyName = "ElementMoleFractions";
				/// <summary>
        /// Species Mass Fractions
        /// </summary>
		public const string SpeciesMassFractionsPropertyName = "SpeciesMassFractions";
				/// <summary>
        /// Species Mole Fractions
        /// </summary>
		public const string SpeciesMoleFractionsPropertyName = "SpeciesMoleFractions";
				/// <summary>
        /// Species Mole Fraction logarithm
        /// </summary>
		public const string SpeciesMoleFractionsLogPropertyName = "SpeciesMoleFractionsLog";
				/// <summary>
        /// Species Molar Concentrations
        /// </summary>
		public const string SpeciesMolarConcentrationsPropertyName = "SpeciesMolarConcentrations";
				/// <summary>
        /// Species non-dimensional Ideal Gas Isobaric Heat Capacities (Cp) [~]
        /// </summary>
		public const string SpeciesCpPropertyName = "SpeciesCp";
				/// <summary>
        /// Species specific Ideal Gas Isobaric Heat Capacities (Cp) [J/K/kg]
        /// </summary>
		public const string SpeciesSpecificCpPropertyName = "SpeciesSpecificCp";
				/// <summary>
        /// Species molar Ideal Gas Isobaric Heat Capacities (Cp) [J/K/mol]
        /// </summary>
		public const string SpeciesMolarCpPropertyName = "SpeciesMolarCp";
				/// <summary>
        /// Species non-dimensional Ideal Gas Isochoric Heat Capacities (Cv) [~]
        /// </summary>
		public const string SpeciesCvPropertyName = "SpeciesCv";
				/// <summary>
        /// Species specific Ideal Gas Isochoric Heat Capacities (Cv) [J/K/kg]
        /// </summary>
		public const string SpeciesSpecificCvPropertyName = "SpeciesSpecificCv";
				/// <summary>
        /// Species molar Ideal Gas Isochoric Heat Capacities (Cv) [J/K/mol]
        /// </summary>
		public const string SpeciesMolarCvPropertyName = "SpeciesMolarCv";
				/// <summary>
        /// Species non-dimensional Ideal Gas Enthalpy (H) [~]
        /// </summary>
		public const string SpeciesHPropertyName = "SpeciesH";
				/// <summary>
        /// Species specific Ideal Gas Enthalpy (H) [J/kg]
        /// </summary>
		public const string SpeciesSpecificHPropertyName = "SpeciesSpecificH";
				/// <summary>
        /// Species molar Ideal Gas Enthalpy (H) [J/mol]
        /// </summary>
		public const string SpeciesMolarHPropertyName = "SpeciesMolarH";
				/// <summary>
        /// Species non-dimensional Ideal Gas Energy (U) [~]
        /// </summary>
		public const string SpeciesUPropertyName = "SpeciesU";
				/// <summary>
        /// Species specific Ideal Gas Energy (U) [J/kg]
        /// </summary>
		public const string SpeciesSpecificUPropertyName = "SpeciesSpecificU";
				/// <summary>
        /// Species molar Ideal Gas Energy (U) [J/mol]
        /// </summary>
		public const string SpeciesMolarUPropertyName = "SpeciesMolarU";
				/// <summary>
        /// Species non-dimensional Ideal Gas Entropy (S) [~]
        /// </summary>
		public const string SpeciesSPropertyName = "SpeciesS";
				/// <summary>
        /// Species specific Ideal Gas Entropy (S) [J/K/kg]
        /// </summary>
		public const string SpeciesSpecificSPropertyName = "SpeciesSpecificS";
				/// <summary>
        /// Species molar Ideal Gas Entropy (S) [J/K/mol]
        /// </summary>
		public const string SpeciesMolarSPropertyName = "SpeciesMolarS";
				/// <summary>
        /// Species non-dimensional Ideal Gas Gibbs Energy (G) [~]
        /// </summary>
		public const string SpeciesGPropertyName = "SpeciesG";
				/// <summary>
        /// Species specific Ideal Gas Gibbs Energy (G) [J/kg]
        /// </summary>
		public const string SpeciesSpecificGPropertyName = "SpeciesSpecificG";
				/// <summary>
        /// Species molar Ideal Gas Gibbs Energy (G) [J/mol]
        /// </summary>
		public const string SpeciesMolarGPropertyName = "SpeciesMolarG";
				/// <summary>
        /// Species non-dimensional Ideal Gas Helmholtz Energy (F) [~]
        /// </summary>
		public const string SpeciesFPropertyName = "SpeciesF";
				/// <summary>
        /// Species specific Ideal Gas Helmholtz Energy (F) [J/kg]
        /// </summary>
		public const string SpeciesSpecificFPropertyName = "SpeciesSpecificF";
				/// <summary>
        /// Species molar Ideal Gas Helmholtz Energy (F) [J/mol]
        /// </summary>
		public const string SpeciesMolarFPropertyName = "SpeciesMolarF";
				/// <summary>
        /// Species ideal gas dynamic viscosities (Nu_k) [Pa * sec]
        /// </summary>
		public const string SpeciesViscositiesPropertyName = "SpeciesViscosities";
				/// <summary>
        /// Species ideal gas thermal conductivities (La_k) [W/m/K]
        /// </summary>
		public const string SpeciesThermalConductivitiesPropertyName = "SpeciesThermalConductivities";
				/// <summary>
        /// Species ideal gas self diffusivities (D_kk) [m**2/sec]
        /// </summary>
		public const string SpeciesSelfDiffusivitiesPropertyName = "SpeciesSelfDiffusivities";
				/// <summary>
        /// Species ideal gas self diffusivities as atmospheric pressure (D_kk) [m**2/sec]
        /// </summary>
		public const string SpeciesSelfDiffusivitiesAtP0PropertyName = "SpeciesSelfDiffusivitiesAtP0";
				/// <summary>
        /// Chemical reaction temperature dependent coefficients
        /// </summary>
		public const string ReactionTemperatureDependentCoefficientsPropertyName = "ReactionTemperatureDependentCoefficients";
				/// <summary>
        /// Chemical reaction forward rate constants [(mol/m**3)**(1-fr)/sec]
        /// </summary>
		public const string ReactionForwardConstantsPropertyName = "ReactionForwardConstants";
				/// <summary>
        /// Chemical reaction reverse rate constants [(mol/m**3)**(1-fr)/sec]
        /// </summary>
		public const string ReactionReverseConstantsPropertyName = "ReactionReverseConstants";
				/// <summary>
        /// Chemical reaction forward rates [(mol/m**3)/sec]
        /// </summary>
		public const string ReactionForwardRatesPropertyName = "ReactionForwardRates";
				/// <summary>
        /// Chemical reaction reverse rates [(mol/m**3)/sec]
        /// </summary>
		public const string ReactionReverseRatesPropertyName = "ReactionReverseRates";
				/// <summary>
        /// Chemical reaction net rates [(mol/m**3)/sec]
        /// </summary>
		public const string ReactionNetRatesPropertyName = "ReactionNetRates";
				/// <summary>
        /// Species chemical creation rates [mol/m**3/sec]
        /// </summary>
		public const string SpeciesChemicalCreationRatesPropertyName = "SpeciesChemicalCreationRates";
				/// <summary>
        /// Species chemical destruction rates [mol/m**3/sec]
        /// </summary>
		public const string SpeciesChemicalDestructionRatesPropertyName = "SpeciesChemicalDestructionRates";
				/// <summary>
        /// Species chemical net production rates [mol/m**3/sec]
        /// </summary>
		public const string SpeciesChemicalNetProductionRatesPropertyName = "SpeciesChemicalNetProductionRates";
				/// <summary>
        /// Species mass fraction chemical net production rates [1/sec]
        /// </summary>
		public const string SpeciesMassFractionChemicalNetProductionRatesPropertyName = "SpeciesMassFractionChemicalNetProductionRates";
				/// <summary>
        /// Species ideal gas diffusivities (D_jk) [m**2/sec]
        /// </summary>
		public const string SpeciesDiffusivitiesPropertyName = "SpeciesDiffusivities";
				/// <summary>
        /// Species ideal gas diffusivities at atmospheric pressure (D_jk) [m**2/sec]
        /// </summary>
		public const string SpeciesDiffusivitiesAtP0PropertyName = "SpeciesDiffusivitiesAtP0";
				/// <summary>
        /// Species ideal gas thermal diffusion ratios (Om_ij) [~]
        /// </summary>
		public const string SpeciesThermalDiffusionRatiosPropertyName = "SpeciesThermalDiffusionRatios";
				/// <summary>
        /// Wilke matrix
        /// </summary>
		public const string SpeciesWilkeMatrixPropertyName = "SpeciesWilkeMatrix";
		 
		public static readonly ReadOnlyArray<string> PropertyNames = new ReadOnlyArray<string>(new string[]
			{ 
				"Cp", 
				"Cv", 
				"Diffusivity", 
				"ElementMassFractions", 
				"ElementMoleFractions", 
				"F", 
				"G", 
				"H", 
				"MassDensity", 
				"MolarCp", 
				"MolarCv", 
				"MolarDensity", 
				"MolarF", 
				"MolarG", 
				"MolarH", 
				"MolarMass", 
				"MolarS", 
				"MolarU", 
				"Pressure", 
				"PressureAtmLog", 
				"ReactionForwardConstants", 
				"ReactionForwardRates", 
				"ReactionNetRates", 
				"ReactionReverseConstants", 
				"ReactionReverseRates", 
				"ReactionTemperatureDependentCoefficients", 
				"S", 
				"SpeciesChemicalCreationRates", 
				"SpeciesChemicalDestructionRates", 
				"SpeciesChemicalNetProductionRates", 
				"SpeciesCp", 
				"SpeciesCv", 
				"SpeciesDiffusivities", 
				"SpeciesDiffusivitiesAtP0", 
				"SpeciesF", 
				"SpeciesG", 
				"SpeciesH", 
				"SpeciesMassFractionChemicalNetProductionRates", 
				"SpeciesMassFractions", 
				"SpeciesMolarConcentrations", 
				"SpeciesMolarCp", 
				"SpeciesMolarCv", 
				"SpeciesMolarF", 
				"SpeciesMolarG", 
				"SpeciesMolarH", 
				"SpeciesMolarS", 
				"SpeciesMolarU", 
				"SpeciesMoleFractions", 
				"SpeciesMoleFractionsLog", 
				"SpeciesS", 
				"SpeciesSelfDiffusivities", 
				"SpeciesSelfDiffusivitiesAtP0", 
				"SpeciesSpecificCp", 
				"SpeciesSpecificCv", 
				"SpeciesSpecificF", 
				"SpeciesSpecificG", 
				"SpeciesSpecificH", 
				"SpeciesSpecificS", 
				"SpeciesSpecificU", 
				"SpeciesThermalConductivities", 
				"SpeciesThermalDiffusionRatios", 
				"SpeciesU", 
				"SpeciesViscosities", 
				"SpeciesWilkeMatrix", 
				"SpecificCp", 
				"SpecificCv", 
				"SpecificF", 
				"SpecificG", 
				"SpecificH", 
				"SpecificS", 
				"SpecificU", 
				"SpeedOfSound", 
				"Temperature", 
				"TemperatureLog", 
				"ThermalConductivity", 
				"U", 
				"Viscosity", 
			});
		#endregion
	}

	public partial struct ReadOnlyIdealGasMixture 
	{
		private IdealGasMixture m_mixture;

		public ReadOnlyIdealGasMixture(IdealGasMixture mixture) : this()
		{
			m_mixture = mixture;
		}

		/// <summary>
		/// Number of Chemical Elements
		/// </summary>
		public int Nel { get { return m_mixture.Nel; } }

		/// <summary>
		/// Number of Chemical Species
		/// </summary>
		public int Nsp { get { return m_mixture.Nsp; } }

		/// <summary>
		/// Number of Chemical Reactions
		/// </summary>
		public int Nre { get { return m_mixture.Nre; } }


		/// <summary>
		/// Number of chemical reaction temperature dependent coefficients
		/// </summary>
		public int NCRTDC { get { return m_mixture.NCRTDC; } }

		 
		/// <summary>
		/// Mixture non-dimensional Ideal Gas Isobaric Heat Capacities (Cp) [~]
		/// </summary>
		public double  Cp 
		{  
			[DebuggerStepThrough()]
			get { return m_mixture.Cp; }  
		}  
		/// <summary>
		/// Mixture non-dimensional Ideal Gas Isochoric Heat Capacities (Cv) [~]
		/// </summary>
		public double  Cv 
		{  
			[DebuggerStepThrough()]
			get { return m_mixture.Cv; }  
		}  
		/// <summary>
		/// Mixture ideal gas self diffusivities (D_kk) [m**2/sec]
		/// </summary>
		public double  Diffusivity 
		{  
			[DebuggerStepThrough()]
			get { return m_mixture.Diffusivity; }  
		}  
		/// <summary>
		/// Mixture non-dimensional Ideal Gas Helmholtz Energy (F) [~]
		/// </summary>
		public double  F 
		{  
			[DebuggerStepThrough()]
			get { return m_mixture.F; }  
		}  
		/// <summary>
		/// Mixture non-dimensional Ideal Gas Gibbs Energy (G) [~]
		/// </summary>
		public double  G 
		{  
			[DebuggerStepThrough()]
			get { return m_mixture.G; }  
		}  
		/// <summary>
		/// Mixture non-dimensional Ideal Gas Enthalpy (H) [~]
		/// </summary>
		public double  H 
		{  
			[DebuggerStepThrough()]
			get { return m_mixture.H; }  
		}  
		/// <summary>
		/// Mixture Mass Density [kg/m**3]
		/// </summary>
		public double  MassDensity 
		{  
			[DebuggerStepThrough()]
			get { return m_mixture.MassDensity; }  
		}  
		/// <summary>
		/// Mixture molar Ideal Gas Isobaric Heat Capacities (Cp) [J/K/mol]
		/// </summary>
		public double  MolarCp 
		{  
			[DebuggerStepThrough()]
			get { return m_mixture.MolarCp; }  
		}  
		/// <summary>
		/// Mixture molar Ideal Gas Isochoric Heat Capacities (Cv) [J/K/mol]
		/// </summary>
		public double  MolarCv 
		{  
			[DebuggerStepThrough()]
			get { return m_mixture.MolarCv; }  
		}  
		/// <summary>
		/// Mixture Molar Density [mol/m**3]
		/// </summary>
		public double  MolarDensity 
		{  
			[DebuggerStepThrough()]
			get { return m_mixture.MolarDensity; }  
		}  
		/// <summary>
		/// Mixture molar Ideal Gas Helmholtz Energy (F) [J/mol]
		/// </summary>
		public double  MolarF 
		{  
			[DebuggerStepThrough()]
			get { return m_mixture.MolarF; }  
		}  
		/// <summary>
		/// Mixture molar Ideal Gas Gibbs Energy (G) [J/mol]
		/// </summary>
		public double  MolarG 
		{  
			[DebuggerStepThrough()]
			get { return m_mixture.MolarG; }  
		}  
		/// <summary>
		/// Mixture molar Ideal Gas Enthalpy (H) [J/mol]
		/// </summary>
		public double  MolarH 
		{  
			[DebuggerStepThrough()]
			get { return m_mixture.MolarH; }  
		}  
		/// <summary>
		/// Mixture Molar Mass [kg/mol]
		/// </summary>
		public double  MolarMass 
		{  
			[DebuggerStepThrough()]
			get { return m_mixture.MolarMass; }  
		}  
		/// <summary>
		/// Mixture molar Ideal Gas Entropy (S) [J/K/mol]
		/// </summary>
		public double  MolarS 
		{  
			[DebuggerStepThrough()]
			get { return m_mixture.MolarS; }  
		}  
		/// <summary>
		/// Mixture molar Ideal Gas Energy (U) [J/mol]
		/// </summary>
		public double  MolarU 
		{  
			[DebuggerStepThrough()]
			get { return m_mixture.MolarU; }  
		}  
		/// <summary>
		/// Mixture Pressure [Pa]
		/// </summary>
		public double  Pressure 
		{  
			[DebuggerStepThrough()]
			get { return m_mixture.Pressure; }  
		}  
		/// <summary>
		/// Mixture Pressure [log(atm)]
		/// </summary>
		public double  PressureAtmLog 
		{  
			[DebuggerStepThrough()]
			get { return m_mixture.PressureAtmLog; }  
		}  
		/// <summary>
		/// Mixture non-dimensional Ideal Gas Entropy (S) [~]
		/// </summary>
		public double  S 
		{  
			[DebuggerStepThrough()]
			get { return m_mixture.S; }  
		}  
		/// <summary>
		/// Mixture specific Ideal Gas Isobaric Heat Capacities (Cp) [J/K/kg]
		/// </summary>
		public double  SpecificCp 
		{  
			[DebuggerStepThrough()]
			get { return m_mixture.SpecificCp; }  
		}  
		/// <summary>
		/// Mixture specific Ideal Gas Isochoric Heat Capacities (Cv) [J/K/kg]
		/// </summary>
		public double  SpecificCv 
		{  
			[DebuggerStepThrough()]
			get { return m_mixture.SpecificCv; }  
		}  
		/// <summary>
		/// Mixture specific Ideal Gas Helmholtz Energy (F) [J/kg]
		/// </summary>
		public double  SpecificF 
		{  
			[DebuggerStepThrough()]
			get { return m_mixture.SpecificF; }  
		}  
		/// <summary>
		/// Mixture specific Ideal Gas Gibbs Energy (G) [J/kg]
		/// </summary>
		public double  SpecificG 
		{  
			[DebuggerStepThrough()]
			get { return m_mixture.SpecificG; }  
		}  
		/// <summary>
		/// Mixture specific Ideal Gas Enthalpy (H) [J/kg]
		/// </summary>
		public double  SpecificH 
		{  
			[DebuggerStepThrough()]
			get { return m_mixture.SpecificH; }  
		}  
		/// <summary>
		/// Mixture specific Ideal Gas Entropy (S) [J/K/kg]
		/// </summary>
		public double  SpecificS 
		{  
			[DebuggerStepThrough()]
			get { return m_mixture.SpecificS; }  
		}  
		/// <summary>
		/// Mixture specific Ideal Gas Energy (U) [J/kg]
		/// </summary>
		public double  SpecificU 
		{  
			[DebuggerStepThrough()]
			get { return m_mixture.SpecificU; }  
		}  
		/// <summary>
		/// Mixture Ideal Gas Speed of Sound (C) [m/sec]
		/// </summary>
		public double  SpeedOfSound 
		{  
			[DebuggerStepThrough()]
			get { return m_mixture.SpeedOfSound; }  
		}  
		/// <summary>
		/// Mixture temperature [K]
		/// </summary>
		public double  Temperature 
		{  
			[DebuggerStepThrough()]
			get { return m_mixture.Temperature; }  
		}  
		/// <summary>
		/// Mixture temperature [log(K)]
		/// </summary>
		public double  TemperatureLog 
		{  
			[DebuggerStepThrough()]
			get { return m_mixture.TemperatureLog; }  
		}  
		/// <summary>
		/// Mixture ideal gas thermal conductivities (La_k) [W/m/K]
		/// </summary>
		public double  ThermalConductivity 
		{  
			[DebuggerStepThrough()]
			get { return m_mixture.ThermalConductivity; }  
		}  
		/// <summary>
		/// Mixture non-dimensional Ideal Gas Energy (U) [~]
		/// </summary>
		public double  U 
		{  
			[DebuggerStepThrough()]
			get { return m_mixture.U; }  
		}  
		/// <summary>
		/// Mixture ideal gas dynamic viscosities (Nu_k) [Pa * sec]
		/// </summary>
		public double  Viscosity 
		{  
			[DebuggerStepThrough()]
			get { return m_mixture.Viscosity; }  
		}  

		 
		/// <summary>
		/// Species Mass Fractions
		/// </summary>
		[MixtureProperty]
		public ReadOnlyArray<double>  ElementMassFractions 
		{  
			[DebuggerStepThrough()]
			get { return m_mixture.ElementMassFractions; }   
		}  
		/// <summary>
		/// Species Mole Fractions
		/// </summary>
		[MixtureProperty]
		public ReadOnlyArray<double>  ElementMoleFractions 
		{  
			[DebuggerStepThrough()]
			get { return m_mixture.ElementMoleFractions; }   
		}  
		/// <summary>
		/// Chemical reaction forward rate constants [(mol/m**3)**(1-fr)/sec]
		/// </summary>
		[MixtureProperty]
		public ReadOnlyArray<double>  ReactionForwardConstants 
		{  
			[DebuggerStepThrough()]
			get { return m_mixture.ReactionForwardConstants; }   
		}  
		/// <summary>
		/// Chemical reaction forward rates [(mol/m**3)/sec]
		/// </summary>
		[MixtureProperty]
		public ReadOnlyArray<double>  ReactionForwardRates 
		{  
			[DebuggerStepThrough()]
			get { return m_mixture.ReactionForwardRates; }   
		}  
		/// <summary>
		/// Chemical reaction net rates [(mol/m**3)/sec]
		/// </summary>
		[MixtureProperty]
		public ReadOnlyArray<double>  ReactionNetRates 
		{  
			[DebuggerStepThrough()]
			get { return m_mixture.ReactionNetRates; }   
		}  
		/// <summary>
		/// Chemical reaction reverse rate constants [(mol/m**3)**(1-fr)/sec]
		/// </summary>
		[MixtureProperty]
		public ReadOnlyArray<double>  ReactionReverseConstants 
		{  
			[DebuggerStepThrough()]
			get { return m_mixture.ReactionReverseConstants; }   
		}  
		/// <summary>
		/// Chemical reaction reverse rates [(mol/m**3)/sec]
		/// </summary>
		[MixtureProperty]
		public ReadOnlyArray<double>  ReactionReverseRates 
		{  
			[DebuggerStepThrough()]
			get { return m_mixture.ReactionReverseRates; }   
		}  
		/// <summary>
		/// Chemical reaction temperature dependent coefficients
		/// </summary>
		[MixtureProperty]
		public ReadOnlyArray<double>  ReactionTemperatureDependentCoefficients 
		{  
			[DebuggerStepThrough()]
			get { return m_mixture.ReactionTemperatureDependentCoefficients; }   
		}  
		/// <summary>
		/// Species chemical creation rates [mol/m**3/sec]
		/// </summary>
		[MixtureProperty]
		public ReadOnlyArray<double>  SpeciesChemicalCreationRates 
		{  
			[DebuggerStepThrough()]
			get { return m_mixture.SpeciesChemicalCreationRates; }   
		}  
		/// <summary>
		/// Species chemical destruction rates [mol/m**3/sec]
		/// </summary>
		[MixtureProperty]
		public ReadOnlyArray<double>  SpeciesChemicalDestructionRates 
		{  
			[DebuggerStepThrough()]
			get { return m_mixture.SpeciesChemicalDestructionRates; }   
		}  
		/// <summary>
		/// Species chemical net production rates [mol/m**3/sec]
		/// </summary>
		[MixtureProperty]
		public ReadOnlyArray<double>  SpeciesChemicalNetProductionRates 
		{  
			[DebuggerStepThrough()]
			get { return m_mixture.SpeciesChemicalNetProductionRates; }   
		}  
		/// <summary>
		/// Species non-dimensional Ideal Gas Isobaric Heat Capacities (Cp) [~]
		/// </summary>
		[MixtureProperty]
		public ReadOnlyArray<double>  SpeciesCp 
		{  
			[DebuggerStepThrough()]
			get { return m_mixture.SpeciesCp; }   
		}  
		/// <summary>
		/// Species non-dimensional Ideal Gas Isochoric Heat Capacities (Cv) [~]
		/// </summary>
		[MixtureProperty]
		public ReadOnlyArray<double>  SpeciesCv 
		{  
			[DebuggerStepThrough()]
			get { return m_mixture.SpeciesCv; }   
		}  
		/// <summary>
		/// Species non-dimensional Ideal Gas Helmholtz Energy (F) [~]
		/// </summary>
		[MixtureProperty]
		public ReadOnlyArray<double>  SpeciesF 
		{  
			[DebuggerStepThrough()]
			get { return m_mixture.SpeciesF; }   
		}  
		/// <summary>
		/// Species non-dimensional Ideal Gas Gibbs Energy (G) [~]
		/// </summary>
		[MixtureProperty]
		public ReadOnlyArray<double>  SpeciesG 
		{  
			[DebuggerStepThrough()]
			get { return m_mixture.SpeciesG; }   
		}  
		/// <summary>
		/// Species non-dimensional Ideal Gas Enthalpy (H) [~]
		/// </summary>
		[MixtureProperty]
		public ReadOnlyArray<double>  SpeciesH 
		{  
			[DebuggerStepThrough()]
			get { return m_mixture.SpeciesH; }   
		}  
		/// <summary>
		/// Species mass fraction chemical net production rates [1/sec]
		/// </summary>
		[MixtureProperty]
		public ReadOnlyArray<double>  SpeciesMassFractionChemicalNetProductionRates 
		{  
			[DebuggerStepThrough()]
			get { return m_mixture.SpeciesMassFractionChemicalNetProductionRates; }   
		}  
		/// <summary>
		/// Species Mass Fractions
		/// </summary>
		[MixtureProperty]
		public ReadOnlyArray<double>  SpeciesMassFractions 
		{  
			[DebuggerStepThrough()]
			get { return m_mixture.SpeciesMassFractions; }   
		}  
		/// <summary>
		/// Species Molar Concentrations
		/// </summary>
		[MixtureProperty]
		public ReadOnlyArray<double>  SpeciesMolarConcentrations 
		{  
			[DebuggerStepThrough()]
			get { return m_mixture.SpeciesMolarConcentrations; }   
		}  
		/// <summary>
		/// Species molar Ideal Gas Isobaric Heat Capacities (Cp) [J/K/mol]
		/// </summary>
		[MixtureProperty]
		public ReadOnlyArray<double>  SpeciesMolarCp 
		{  
			[DebuggerStepThrough()]
			get { return m_mixture.SpeciesMolarCp; }   
		}  
		/// <summary>
		/// Species molar Ideal Gas Isochoric Heat Capacities (Cv) [J/K/mol]
		/// </summary>
		[MixtureProperty]
		public ReadOnlyArray<double>  SpeciesMolarCv 
		{  
			[DebuggerStepThrough()]
			get { return m_mixture.SpeciesMolarCv; }   
		}  
		/// <summary>
		/// Species molar Ideal Gas Helmholtz Energy (F) [J/mol]
		/// </summary>
		[MixtureProperty]
		public ReadOnlyArray<double>  SpeciesMolarF 
		{  
			[DebuggerStepThrough()]
			get { return m_mixture.SpeciesMolarF; }   
		}  
		/// <summary>
		/// Species molar Ideal Gas Gibbs Energy (G) [J/mol]
		/// </summary>
		[MixtureProperty]
		public ReadOnlyArray<double>  SpeciesMolarG 
		{  
			[DebuggerStepThrough()]
			get { return m_mixture.SpeciesMolarG; }   
		}  
		/// <summary>
		/// Species molar Ideal Gas Enthalpy (H) [J/mol]
		/// </summary>
		[MixtureProperty]
		public ReadOnlyArray<double>  SpeciesMolarH 
		{  
			[DebuggerStepThrough()]
			get { return m_mixture.SpeciesMolarH; }   
		}  
		/// <summary>
		/// Species molar Ideal Gas Entropy (S) [J/K/mol]
		/// </summary>
		[MixtureProperty]
		public ReadOnlyArray<double>  SpeciesMolarS 
		{  
			[DebuggerStepThrough()]
			get { return m_mixture.SpeciesMolarS; }   
		}  
		/// <summary>
		/// Species molar Ideal Gas Energy (U) [J/mol]
		/// </summary>
		[MixtureProperty]
		public ReadOnlyArray<double>  SpeciesMolarU 
		{  
			[DebuggerStepThrough()]
			get { return m_mixture.SpeciesMolarU; }   
		}  
		/// <summary>
		/// Species Mole Fractions
		/// </summary>
		[MixtureProperty]
		public ReadOnlyArray<double>  SpeciesMoleFractions 
		{  
			[DebuggerStepThrough()]
			get { return m_mixture.SpeciesMoleFractions; }   
		}  
		/// <summary>
		/// Species Mole Fraction logarithm
		/// </summary>
		[MixtureProperty]
		public ReadOnlyArray<double>  SpeciesMoleFractionsLog 
		{  
			[DebuggerStepThrough()]
			get { return m_mixture.SpeciesMoleFractionsLog; }   
		}  
		/// <summary>
		/// Species non-dimensional Ideal Gas Entropy (S) [~]
		/// </summary>
		[MixtureProperty]
		public ReadOnlyArray<double>  SpeciesS 
		{  
			[DebuggerStepThrough()]
			get { return m_mixture.SpeciesS; }   
		}  
		/// <summary>
		/// Species ideal gas self diffusivities (D_kk) [m**2/sec]
		/// </summary>
		[MixtureProperty]
		public ReadOnlyArray<double>  SpeciesSelfDiffusivities 
		{  
			[DebuggerStepThrough()]
			get { return m_mixture.SpeciesSelfDiffusivities; }   
		}  
		/// <summary>
		/// Species ideal gas self diffusivities as atmospheric pressure (D_kk) [m**2/sec]
		/// </summary>
		[MixtureProperty]
		public ReadOnlyArray<double>  SpeciesSelfDiffusivitiesAtP0 
		{  
			[DebuggerStepThrough()]
			get { return m_mixture.SpeciesSelfDiffusivitiesAtP0; }   
		}  
		/// <summary>
		/// Species specific Ideal Gas Isobaric Heat Capacities (Cp) [J/K/kg]
		/// </summary>
		[MixtureProperty]
		public ReadOnlyArray<double>  SpeciesSpecificCp 
		{  
			[DebuggerStepThrough()]
			get { return m_mixture.SpeciesSpecificCp; }   
		}  
		/// <summary>
		/// Species specific Ideal Gas Isochoric Heat Capacities (Cv) [J/K/kg]
		/// </summary>
		[MixtureProperty]
		public ReadOnlyArray<double>  SpeciesSpecificCv 
		{  
			[DebuggerStepThrough()]
			get { return m_mixture.SpeciesSpecificCv; }   
		}  
		/// <summary>
		/// Species specific Ideal Gas Helmholtz Energy (F) [J/kg]
		/// </summary>
		[MixtureProperty]
		public ReadOnlyArray<double>  SpeciesSpecificF 
		{  
			[DebuggerStepThrough()]
			get { return m_mixture.SpeciesSpecificF; }   
		}  
		/// <summary>
		/// Species specific Ideal Gas Gibbs Energy (G) [J/kg]
		/// </summary>
		[MixtureProperty]
		public ReadOnlyArray<double>  SpeciesSpecificG 
		{  
			[DebuggerStepThrough()]
			get { return m_mixture.SpeciesSpecificG; }   
		}  
		/// <summary>
		/// Species specific Ideal Gas Enthalpy (H) [J/kg]
		/// </summary>
		[MixtureProperty]
		public ReadOnlyArray<double>  SpeciesSpecificH 
		{  
			[DebuggerStepThrough()]
			get { return m_mixture.SpeciesSpecificH; }   
		}  
		/// <summary>
		/// Species specific Ideal Gas Entropy (S) [J/K/kg]
		/// </summary>
		[MixtureProperty]
		public ReadOnlyArray<double>  SpeciesSpecificS 
		{  
			[DebuggerStepThrough()]
			get { return m_mixture.SpeciesSpecificS; }   
		}  
		/// <summary>
		/// Species specific Ideal Gas Energy (U) [J/kg]
		/// </summary>
		[MixtureProperty]
		public ReadOnlyArray<double>  SpeciesSpecificU 
		{  
			[DebuggerStepThrough()]
			get { return m_mixture.SpeciesSpecificU; }   
		}  
		/// <summary>
		/// Species ideal gas thermal conductivities (La_k) [W/m/K]
		/// </summary>
		[MixtureProperty]
		public ReadOnlyArray<double>  SpeciesThermalConductivities 
		{  
			[DebuggerStepThrough()]
			get { return m_mixture.SpeciesThermalConductivities; }   
		}  
		/// <summary>
		/// Species non-dimensional Ideal Gas Energy (U) [~]
		/// </summary>
		[MixtureProperty]
		public ReadOnlyArray<double>  SpeciesU 
		{  
			[DebuggerStepThrough()]
			get { return m_mixture.SpeciesU; }   
		}  
		/// <summary>
		/// Species ideal gas dynamic viscosities (Nu_k) [Pa * sec]
		/// </summary>
		[MixtureProperty]
		public ReadOnlyArray<double>  SpeciesViscosities 
		{  
			[DebuggerStepThrough()]
			get { return m_mixture.SpeciesViscosities; }   
		}  

		 
		/// <summary>
		/// Species ideal gas diffusivities (D_jk) [m**2/sec]
		/// </summary>
		[MixtureProperty]
		public ReadOnlyMatrix<double>  SpeciesDiffusivities
		{  
			[DebuggerStepThrough()]
			get { return m_mixture.SpeciesDiffusivities; }    
		}  
		/// <summary>
		/// Species ideal gas diffusivities at atmospheric pressure (D_jk) [m**2/sec]
		/// </summary>
		[MixtureProperty]
		public ReadOnlyMatrix<double>  SpeciesDiffusivitiesAtP0
		{  
			[DebuggerStepThrough()]
			get { return m_mixture.SpeciesDiffusivitiesAtP0; }    
		}  
		/// <summary>
		/// Species ideal gas thermal diffusion ratios (Om_ij) [~]
		/// </summary>
		[MixtureProperty]
		public ReadOnlyMatrix<double>  SpeciesThermalDiffusionRatios
		{  
			[DebuggerStepThrough()]
			get { return m_mixture.SpeciesThermalDiffusionRatios; }    
		}  
		/// <summary>
		/// Wilke matrix
		/// </summary>
		[MixtureProperty]
		public ReadOnlyMatrix<double>  SpeciesWilkeMatrix
		{  
			[DebuggerStepThrough()]
			get { return m_mixture.SpeciesWilkeMatrix; }    
		}  
	}
}